A modern, interactive portfolio built with Next.js 14 + TypeScript + Tailwind CSS.
- 🎯 Hero section with motion + typing intro
- 🧠 Skills, case studies, and project showcase
- 📬 Contact form with Resend email delivery
- 🔐 Secret room with passcode-based access
- 📊 GitHub activity card (commits, PRs, stars, etc.)
- 📈 Visitor tracking with Upstash Redis
- 🎨 Theme presets (
dark,bright,cyber)
- ⚛️ Next.js (App Router)
- 🧩 React + TypeScript
- 🎬 Framer Motion
- 💨 Tailwind CSS
- ✉️ Resend
- 🧮 Upstash Redis
src/
app/
api/
contact/route.ts # Contact form API (Resend)
github-stats/route.ts # GitHub GraphQL stats API
secret/route.ts # Secret room auth cookie API
track/route.ts # Visitor tracking API
secret/
page.tsx
SecretRoomClient.tsx
globals.css
layout.tsx
page.tsx
components/
Hero.tsx
Projects.tsx
Contact.tsx
Navbar.tsx
GitHubStatsCard.tsx
...
lib/
data.ts
motion.ts
redis.ts- Clone and install:
npm install- Create
.envwith required keys:
# Contact (Resend)
RESEND_API_KEY=
RESEND_FROM_EMAIL=
CONTACT_TO_EMAIL=
# Optional webhook fallback/notifications
DISCORD_WEBHOOK_URL=
CONTACT_WEBHOOK_URL=
# Visitor tracking
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
# Secret room
SECRET_ROOM_PASSCODE=
# GitHub stats card
GITHUB_TOKEN=
GITHUB_USERNAME=- Run locally:
npm run devnpm run dev→ start local dev servernpm run build→ production buildnpm run start→ run production servernpm run lint→ lint project
POST /api/contact→ send contact messageGET /api/github-stats→ GitHub stats for hero cardGET/POST/DELETE /api/secret→ secret room session flowPOST /api/track→ track visitor count
Deploy on Vercel (recommended):
- Push repository to GitHub
- Import project in Vercel
- Add all environment variables in Vercel project settings
- Deploy