- Next.js 16.1.3 - React framework with App Router
- React 19.2.3 - UI library
- TypeScript 5.9.3 - Type safety
- Tailwind CSS 4 - Utility-first CSS framework
- tailwind-merge - Merge Tailwind classes safely
- Custom Fonts - Commit Mono for terminal aesthetic
- Apollo Client 4.1.0 - GraphQL client
- Hygraph - Headless CMS (GraphQL)
- GraphQL Code Generator - Type-safe GraphQL queries
- Radix UI - Accessible component primitives
- Dialog, Popover, Progress, Tabs, Command, etc.
- Lucide React - Icon library
- Sonner - Toast notifications
- React Hook Form - Form state management
- Resend - Email service for contact form
- next-themes - Theme management
- embla-carousel-react - Carousel component
- cmdk - Command palette component
portfolio-2026/
βββ app/ # Next.js App Router
β βββ api/ # API routes
β β βββ contact/ # Contact form endpoint
β β βββ preload/ # Preload data endpoint
β βββ styles/ # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
β βββ not-found.tsx # 404 page
βββ components/ # React components
β βββ ui/ # Reusable UI components
β βββ shared/ # Shared components (Navbar, Preloader)
β βββ portfolio-hero/ # Hero section
β βββ experience-section/
β βββ projects-section/
β βββ technologies-section/
β βββ contact-section/
βββ hooks/ # Custom React hooks
β βββ useSectionNavigation.ts
β βββ useImageLoader.ts
β βββ usePreloader.ts
βββ utils/ # Pure utility functions
β βββ preloadImage.ts
β βββ extractImageUrls.ts
βββ lib/ # Shared libraries
β βββ apolloClient.ts # Apollo Client setup
β βββ contact.ts # Contact form logic
β βββ utils.ts # Utility functions
βββ fetchers/ # Data fetching functions
β βββ getAuthor.ts
β βββ getExperiences.ts
β βββ getProjects.ts
β βββ getTechnologies.ts
βββ queries/ # GraphQL queries
β βββ *.graphql
βββ types/ # TypeScript types
β βββ graphql.ts # Generated GraphQL types
βββ public/ # Static assets
βββ documents/ # Resume PDF
βββ fonts/ # Custom fonts
- Node.js 20+
- npm, yarn, pnpm, or bun
- Clone the repository:
git clone <repository-url>
cd portfolio-2026- Install dependencies:
npm install
# or
yarn install
# or
pnpm install- Set up environment variables:
Create a
.env.localfile in the root directory:
# Hygraph GraphQL Endpoint
# HYGRAPH_ENDPOINT=your_endpoint
# Resend API Key (for contact form)
RESEND_API_KEY=your_resend_api_key
# Contact Email (where form submissions are sent)
CONTACT_EMAIL=[email protected]- Generate GraphQL types:
npm run codegen- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run codegen- Generate GraphQL types from schema
The project uses Hygraph (formerly GraphCMS) as the headless CMS. Update the GraphQL endpoint in:
lib/apolloClient.ts- Apollo Client configurationcodegen.ts- GraphQL Code Generator configuration
Configure allowed image domains in next.config.ts:
images: {
domains: ["your-image-domain.com"],
}npm run buildMake sure to set all required environment variables in your deployment platform:
RESEND_API_KEY- Required for contact formCONTACT_EMAIL- Required for contact form
- Vercel - Optimized for Next.js
- Netlify - Great Next.js support
- Any Node.js hosting - Standard Next.js deployment