A production-ready Next.js (App Router) portfolio starter using TypeScript, Tailwind CSS, and GSAP.
codex_portfolio/
├── app/
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
├── components/
│ ├── AboutSection.tsx
│ ├── ContactSection.tsx
│ ├── ExperienceSection.tsx
│ ├── HeroSection.tsx
│ ├── Navbar.tsx
│ ├── ProjectsSection.tsx
│ ├── SkillsSection.tsx
│ └── ThemeToggle.tsx
├── data/
│ └── siteData.ts
├── hooks/
│ ├── useHeroAnimation.ts
│ └── useSectionReveal.ts
├── lib/
│ └── gsap.ts
├── next.config.mjs
├── package.json
├── postcss.config.js
├── tailwind.config.ts
├── tsconfig.json
└── types.ts
npm install
npm run devpnpm install
pnpm devBuild + start production:
npm run build
npm run start- Sticky responsive navbar with anchor-based smooth scroll.
- Hero section with GSAP staggered intro and parallax background effect.
- Scroll-triggered reveal animations for all sections.
- Animated projects grid with image hover zoom/reveal.
- Timeline-style experience and education section.
- Dark mode toggle with saved preference.
- Reusable animation hooks and typed content data.
- Update nav links, projects, skills, and timeline content in:
data/siteData.ts
- Update hero copy and contact email in:
components/HeroSection.tsxcomponents/ContactSection.tsx
- Edit brand colors in
tailwind.config.tsundertheme.extend.colors. - Adjust base backgrounds/text in
app/globals.css.
- Hero timeline settings:
hooks/useHeroAnimation.ts
- Section reveal animation defaults:
hooks/useSectionReveal.ts
Common GSAP easing examples:
power2.outpower3.outexpo.outback.out(1.7)
If you deploy on Vercel, this project works with zero additional server config.