Personal portfolio site built with Next.js (App Router) and statically exported for GitHub Pages.
- Live site:
https://jakecastillo.github.io - Framework: Next.js static export (
output: "export") - Styling/UX: Tailwind CSS v4, Framer Motion animations, dark/light theme toggle
- Pages: Home, About, Experience, Skills, Contact (
app/) - Shared UI:
Header,Footer,ScrollProgress,Section(components/) - Terminal-style hero: interactive “terminal” typing + command handling (
components/TerminalTyping.tsx) - Content source-of-truth: resume/skills/experience data in
data/resume.ts - SEO basics: Open Graph metadata (
app/layout.tsx) + sitemap/robots vianext-sitemap
Install deps, then run the dev server:
yarn install
yarn devOpen http://localhost:3000 with your browser to see the result.
yarn dev: run locallyyarn build: build + static export toout/(also runsnext-sitemapviapostbuild)yarn lint: lintyarn typecheck: TypeScript checkyarn format: prettier format
app/: routes + layout (app/layout.tsxsets global metadata and shells)components/: reusable UI (nav, footer, scroll progress, terminal hero)data/resume.ts: edit this to update copy, experience, skills, and contact infopublic/: static assets (portrait, icons, generatedrobots.txt/sitemap.xml)
This repo is configured to deploy to GitHub Pages via .github/workflows/deploy.yml:
- On push to
master, GitHub Actions installs deps, lints, typechecks, builds, and uploadsout/to Pages. out/.nojekyllis created during the workflow to avoid GitHub Pages Jekyll processing.
- Update content:
data/resume.ts - Update metadata/OG:
app/layout.tsx - Update theme tokens:
app/globals.css(--background,--primary, terminal colors, etc.) - Update hero image:
public/jake-portrait.jpeg(referenced byapp/page.tsx)
- This site is a static export; Pages are pre-rendered and served as static files (no server runtime).
- If you add client-only features, keep them compatible with static hosting (no API routes unless you use a third-party backend).
Check out our Next.js deployment documentation for more details.