I rebuilt my website (again)
I seem to rebuild my website more often than I write posts on it. I've had static pages, I've tried a number of different CMS tools, and I've even tried to roll my own by hand. For the last two years, the site lived on WordPress using AWS Lightsail. A setup that worked, sure, but one I kept resenting: the cognitive overhead of WordPress, the monthly AWS bill reminding me I was paying for features I'd never use, and the obligation to check in every few months to patch vulnerabilities and keep things from rotting.
But something shifted recently.
I've been finishing a few weekend projects, and in the process of rebuilding "Can You Beat Wellington" using Claude, GitHub Codespaces, and Vercel, I realised how much simpler modern tools make it to build exactly what you need. No bloat. No compromises. No paying for a platform designed to be everything to everyone.
So I asked myself: what do I actually want?
A simple, largely static site. Blog posts. A project portfolio. A way to hook into the fediverse so I'm not locked into any one platform. And ideally, something that reused the same tools and workflow I'd been enjoying on my weekend projects, because why learn a new way of doing things?
So I built it. Well, I prompted it, and Claude did most of the heavy lifting.
How It Works
The new site is built on Next.js with Tailwind CSS, deployed to Vercel, with posts stored as Markdown files in GitHub. No database. No CMS dashboard. Just git commits and push-to-deploy simplicity.
Each blog post lives as a .md file with frontmatter: title, date, category, tags, featured image. When I write a new post, I commit it to GitHub, and Vercel automatically rebuilds and deploys. The whole workflow takes seconds. The site is fast, fully under my control, and costs almost nothing to run.
The site is also connected to Mastodon via ActivityPub. When I publish a new post, it automatically posts to my Mastodon account with a link, excerpt, and featured image. I can also receive mentions and interactions from Mastodon directly. It's a small touch, but it means the blog becomes part of the fediverse rather than isolated in the traditional web.
Why This Approach
WordPress wasn't wrong, exactly. It's just a sledgehammer for driving a nail. I don't need plugins, themes, a wysiwyg editor, or comment systems (those can come later if I want them). I need to write Markdown, commit to git, and deploy. That's it.
And because the site is built on the same stack I'm using for other projects, there's less cognitive load. The same principles apply: version control, GitHub as my source of truth, Vercel for hosting, and Claude for when I need to build something new or refactor something old.
What's Extensible
The architecture is deliberately simple, but open-ended. Want to add image uploads? Vercel Blob Storage is already planned. Want to bring back comments someday? There's space for that without ripping things up. Want a private photo gallery for friends? The same codebase can handle auth and separate sections.
It's designed so that if I want to add something, or change something, I don't have to fight against the assumptions of a big platform. I just edit the code.
Replies
Reply on Mastodon →Loading replies…