← All posts

Building This Site

Building This Site

I wanted a personal site that was fast, easy to write for, and didn't require maintaining a CMS. Next.js with MDX files checked all three.

The stack

  • Next.js 16 with the App Router
  • Tailwind CSS v4 for styling
  • MDX for blog posts — write in markdown, embed React components when needed
  • Vercel for hosting

How blog posts work

Each post lives in content/blog/ as an .mdx file. A registry in lib/posts.ts lists every post with its title, date, and description — that's what powers the blog index.

export const posts: Post[] = [
  {
    slug: "building-this-site",
    title: "Building This Site",
    date: "2026-06-24",
    description: "How I built this site.",
  },
]

When you visit /blog/building-this-site, Next.js dynamically imports the corresponding MDX file and renders it. generateStaticParams ensures every post is statically generated at build time.

Deploying to Vercel

npx vercel --prod

That's genuinely it. Vercel detects Next.js automatically and configures everything correctly.