catt.me
← All posts

Why I Built This Blog

Filed undermetaon

Every few years I get the itch to build my own site again. There are plenty of good blog platforms — Medium, Substack, Ghost, Bear — but they all come with tradeoffs: lock-in, weird editorial choices, paywalls, or just a look that isn't quite mine.

The stack#

The whole thing is intentionally simple:

  • Next.js for the framework
  • MDX for the posts (Markdown with React components mixed in)
  • Tailwind CSS for styling
  • Shiki for syntax highlighting
  • Statically exported, served by nginx on a small VPS

No database. No CMS. No build queue. Just .mdx files in a git repo. When I push, GitHub Actions builds the site and rsyncs it to the server.

Why static#

A blog has roughly two operations: write and read. Both are best-served by plain HTML. Static export means:

  • The site is just files. No process to babysit.
  • It's basically free to host.
  • It's fast — first paint usually finishes before you can blink.
  • I can serve it from any random web server, including the one in my closet.

That's the whole pitch.