Every few years I throw away my personal site and start over. This time I gave myself a single constraint: I have to be able to explain every part of the build. No plugins I don't understand, no config I copied from a template.
What it runs on
- The Next.js App Router, with React Server Components doing nearly all of the rendering.
- Tailwind CSS v4 for styling, with the palette defined as CSS custom properties so light and dark mode are the same code path.
- Markdown files in
content/posts, read at build time. Adding a post means adding a file.
That's it. There's one client component on the whole site — the theme toggle — because it's the only thing that genuinely needs to run in the browser.
The writing part
The reason to have a site at all is to write on it. Everything else is scaffolding, and scaffolding is fun in a way that writing isn't, which is exactly why it's so tempting to keep rebuilding.
The best personal site is the one you actually publish to.
So: fewer redesigns, more posts. We'll see how that goes.