portfolio
shippedpersonal site. next.js, tailwind, vercel. the thing you're looking at right now.
a portfolio site that's been evolving for over two years. started as a basic page, grew into a full content platform with projects, thoughts, reading lists, and now a changelog that tracks everything i build.
key decisions
next.js app router over pages router
file-based routing under app/ is cleaner. each section is a folder with page.js. no custom routing config needed.
css modules + tailwind hybrid
tailwind for layout and spacing, css modules for scoped component styles. avoids tailwind's class soup for complex components while keeping utility classes for simple stuff.
js data files over a CMS
content changes rarely. editing a js array is faster than setting up a CMS, and there's no build step or API call. the data is right next to the component that renders it.
what i built
- changelog page with git-style branch timelines, entry overflow, and filter pills
- project detail pages with engineering-focused case studies
- thoughts and reading list sections
- seo component with og/twitter meta tags on every page
- dark mode via prefers-color-scheme
- blog with prisma + planetscale for view counts
timeline
pilot. first deploy to vercel.
project page and home page highlights
quotes page and blog api
contact page, photography section
seo across all pages
work experience page
redesigned project detail and listing pages
thoughts section, grid layout
case study components for projects
wanted to showcase technical decisions, not just screenshots
rewrote intro, killed case studies, built changelog with branch timelines
case study format made things more ambiguous, not less. the changelog tells a better story.