English-language developer portfolio for a Computer Science + Mathematics double-degree student. Built to be edited in minutes and deployed free on Vercel.
Live: set your URL here after deploying → https://<your-project>.vercel.app
- Next.js 16 (App Router, Turbopack) + React 19
- TypeScript (strict)
- Tailwind CSS v4 (CSS-first
@theme, dark mode vianext-themes) - Vercel Analytics + Speed Insights
- Formspree contact form (with a
mailto:fallback) - KaTeX + hand-built interactive SVG visualisations on the optional
/mathroute
- 🌗 Light / dark / system theme, no flash of wrong theme
- 📁 Project case studies driven by a single typed file (
src/content/projects.ts) - 🔎 SEO: per-page metadata,
sitemap.xml,robots.txt, build-time OG image, JSON-LDPersonstructured data - ♿ Accessibility: semantic HTML, visible focus, skip link, reduced-motion support
- 🧮 Optional, modular maths showcase (gradient descent + Fourier series demos)
pnpm install
cp .env.example .env.local # then fill in the values
pnpm dev # http://localhost:3000Build & run production locally:
pnpm build
pnpm startAll the content lives in a handful of files — see CONTENT_GUIDE.md. Quick map:
| What | Where |
|---|---|
| Name, email, socials, CV path | src/lib/config.ts |
| Projects (case studies) | src/content/projects.ts |
| Skills | src/data/skills.ts |
| Education / experience | src/data/experience.ts |
| Screenshots | public/images/projects/ |
| CV (PDF) | public/cv/ |
Search the codebase for TODO (USER) to find every spot that needs your input.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_SITE_URL |
Canonical URL (metadata, OG, sitemap). Set to your *.vercel.app URL. |
NEXT_PUBLIC_FORM |
Formspree form id. Empty → contact form falls back to mailto:. |
- Push this repo to GitHub.
- On vercel.com: Add New → Project → Import the repo (framework auto-detects Next.js).
- Add the environment variables above (Production + Preview).
- Deploy → you get
https://<project>.vercel.appwith automatic HTTPS and Git-based CI/CD (push tomasterships to production; PRs get preview URLs).
See DEPLOY.md for the full step-by-step.