This site
A static Next.js portfolio and blog with a file-based MDX content pipeline.
The problem
Every personal site I'd tried before died the same way: the friction of publishing outgrew the desire to publish. A CMS meant remembering a login. A hand-rolled static generator meant maintaining a static generator. Both meant that "write a post" was never a five-minute task.
The approach
Content is files. A post is a .mdx file in the repo with a few lines of
frontmatter — no registration step, no database row, no build manifest to
update. Everything downstream (the index pages, the RSS feed, the sitemap, the
tag list) derives from the filesystem at build time.
The rest follows from that decision:
- Static output. Every page is prerendered. There is no server to keep warm and nothing to fall over.
- Build-time highlighting. Shiki runs during the build, so code blocks cost no client-side JavaScript.
- Drafts that actually work. A
draft: trueflag hides a post from the production build while leaving it readable in local dev.
What I'd revisit
The design leans hard on a single accent color and a lot of negative space, which works well for text and less well for image-heavy project pages. If the work section grows, it likely needs a genuine gallery treatment rather than the current index rows.