Welcome to the source code for my personal web portfolio. This project is a complete rebuild of my previous Vite-based portfolio, now leveraging the power of Next.js 15 with React 19, TypeScript, and Tailwind CSS. It showcases my skills, projects, and professional background as a web developer with a focus on modern development practices, performance, and user experience.
Web Portfolio Link: https://rikuron-web-portfolio.vercel.app
This portfolio is built with a focus on modern web development technologies:
Follow these steps to run the portfolio locally:
Ensure you have the following installed:
# Install/update npm globally
npm install npm@latest -g
# Or install pnpm (recommended)
npm install -g pnpm
git clone https://github.com/Rikuron/Web-Portfolio.git
cd Web-Portfolio/next-ts
# Using npm
npm install
# Or using pnpm (recommended)
pnpm install
# Using npm with Turbopack (faster)
npm run dev
# Or using pnpm
pnpm dev
Open your browser
Navigate to http://localhost:3000 to see the portfolio in action.
This project follows the standard Next.js App Router structure:
next-ts/
├── public/ # Static assets like fonts and images
│ ├── fonts/
│ ├── images/
│ ├── josh_lmao.ico # Site Icon / Favicon
├── src/
│ ├── app/
│ │ ├── components/ # Reusable client components (ThemeProvider, ProjectCard)
│ │ │ ├── ClientLayout.tsx # Client-side layout wrapper
│ │ │ ├── ProjectCard.tsx # Individual project display
│ │ │ └── ThemeProvider.tsx # Theme context
│ │ ├── hooks/ # Custom React hooks (usePersistentTheme, useHeaderHeight)
│ │ │ ├── useHeaderHeight.ts # Dynamic header height management
│ │ │ └── usePersistentTheme.ts # Theme persistence logic
│ │ ├── sections/ # Major UI sections (Header, Hero, Tech, Projects, Contact, Footer,)
│ │ ├── utils/ # Utility functions
│ │ │ ├── navigation.ts # Navigation helpers
│ │ │ ├── projectData.ts # Project information data
│ │ │ └── techStack.ts # Technology stack data
│ │ ├── globals.css # Global styles and theme variables
│ │ ├── layout.tsx # Root layout (Server Component)
│ │ └── page.tsx # Main page content (Server Component)
│ └── …
├── eslint.config.mjs
├── next.config.ts
├── postcss.config.mjs
└── tsconfig.json
This portfolio is deployed on Vercel for optimal performance:
The contact form uses EmailJS for client-side email functionality:
This project is open source and available under the MIT License.
Josh Eugenio
Project Repository: https://github.com/Rikuron/Web-Portfolio