Skip to content

ddebixx/portfolio-2026

Repository files navigation

Portfolio 2026

πŸ“Έ Screenshots

image image image

πŸ› οΈ Tech Stack

Core

  • Next.js 16.1.3 - React framework with App Router
  • React 19.2.3 - UI library
  • TypeScript 5.9.3 - Type safety

Styling

  • Tailwind CSS 4 - Utility-first CSS framework
  • tailwind-merge - Merge Tailwind classes safely
  • Custom Fonts - Commit Mono for terminal aesthetic

Data Fetching

  • Apollo Client 4.1.0 - GraphQL client
  • Hygraph - Headless CMS (GraphQL)
  • GraphQL Code Generator - Type-safe GraphQL queries

UI Components

  • Radix UI - Accessible component primitives
    • Dialog, Popover, Progress, Tabs, Command, etc.
  • Lucide React - Icon library
  • Sonner - Toast notifications

Forms & Validation

  • React Hook Form - Form state management
  • Resend - Email service for contact form

Other

  • next-themes - Theme management
  • embla-carousel-react - Carousel component
  • cmdk - Command palette component

πŸ“ Project Structure

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

πŸš€ Getting Started

Prerequisites

  • Node.js 20+
  • npm, yarn, pnpm, or bun

Installation

  1. Clone the repository:
git clone <repository-url>
cd portfolio-2026
  1. Install dependencies:
npm install
# or
yarn install
# or
pnpm install
  1. Set up environment variables: Create a .env.local file 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]
  1. Generate GraphQL types:
npm run codegen
  1. Run the development server:
npm run dev
  1. Open http://localhost:3000 in your browser.

πŸ“œ Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run start - Start production server
  • npm run lint - Run ESLint
  • npm run codegen - Generate GraphQL types from schema

πŸ”§ Configuration

Hygraph Setup

The project uses Hygraph (formerly GraphCMS) as the headless CMS. Update the GraphQL endpoint in:

  • lib/apolloClient.ts - Apollo Client configuration
  • codegen.ts - GraphQL Code Generator configuration

Image Domains

Configure allowed image domains in next.config.ts:

images: {
  domains: ["your-image-domain.com"],
}

🚒 Deployment

Build for Production

npm run build

Environment Variables

Make sure to set all required environment variables in your deployment platform:

  • RESEND_API_KEY - Required for contact form
  • CONTACT_EMAIL - Required for contact form

Recommended Platforms

  • Vercel - Optimized for Next.js
  • Netlify - Great Next.js support
  • Any Node.js hosting - Standard Next.js deployment

About

Portfolio

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors