Skip to content
QG
← Projects

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: true flag 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.