Back to blog

Building This Portfolio

A look at the stack and decisions behind this site — Next.js, Tailwind, and MDX.

nextjs
portfolio
mdx

This portfolio is built with a few deliberate choices aimed at keeping things fast, maintainable, and easy to extend.

The stack

LayerChoice
FrameworkNext.js 16 (App Router)
StylingTailwind CSS v4
ComponentsRadix UI + custom primitives
ContentMDX files in content/blog/
HostingVercel

Why MDX for the blog

MDX gives me the best of both worlds: write in Markdown, drop in React components when needed. Posts live as plain files in the repo — no CMS, no database, version-controlled alongside the code.

The rendering pipeline uses next-mdx-remote with a few plugins:

  • remark-gfm for tables, task lists, and strikethrough
  • rehype-slug for heading anchor links

What's next

Some ideas for future posts:

  1. How the photography gallery pulls from Vercel Blob storage
  2. Animations with Framer Motion without hurting performance
  3. Lessons from five years of React development

If there's something specific you'd like me to write about, get in touch.