I rebuilt my personal website as a test project
A chance to learn Claude, Astro, GitHub and Cloudflare before taking on the TeamUp and Bean Ninjas websites.
I probably over-engineered it.


If all I wanted was somewhere to publish my writing, plain HTML would have done the job.
But the website itself wasn’t really the point.
I’m about to rebuild the TeamUp and Bean Ninjas websites, and wanted to understand the tools and process before I touched either one.
So I used my personal website as the test project.
Low risk, badly in need of an update, and somewhere I could experiment without worrying about getting it wrong.
The old website
The first version of my personal site was built using Notion and Super.
It was a home for my writing.
It did the job, but the design was clunky and I didn’t feel proud of it.
I wanted publishing to feel simple: write something, publish it. With Notion and Super, there were quite a few steps in between.
To be fair, that’s not why I stopped writing.
I just haven’t had much time for writing over the last couple of years.
Now I have a bit more space again, I’m planning to write more. And I want a home for that writing that I’m not embarrassed by.
Figuring out the new tech stack
I started by asking questions.
I talked to friends about what tech stacks they were using, looked at the personal websites of people I admire and tried to understand the different options.
Eventually, I landed on Claude, Astro, GitHub and Cloudflare.
ChatGPT helped me work through the concept. I used Claude Design for the design, then Claude Code to build it.
Throughout the process, I had ChatGPT open alongside Claude.
Claude was doing the building, while I used ChatGPT to ask questions, explain things I didn’t understand, sanity-check what Claude was telling me, troubleshoot problems and help me write better prompts.
There are still parts I deliberately left for later.
For version two, I’m planning to add Sanity as a CMS. I don’t need a CMS for my personal website, but I want to learn how it works before rebuilding TeamUp. Eventually, I want our team to be able to publish content without having to touch the website code.
The stack changed quite a bit in the process:
| Old setup | New setup |
|---|---|
| Notion for content | Markdown / MDX |
| Super for the website | Astro |
| Hosting through Super | Cloudflare Pages |
| No version control | GitHub |
| Template-based design | Claude Design |
| No coding workflow | Claude Code + ChatGPT |
The code wasn’t the hard part
One of the slowest parts was writing the copy.
The first versions of the copy weren’t quite right, partly because I hadn’t given Claude enough context. But seeing the copy inside the design made it much easier to react to:
That’s not what I mean.
That doesn’t sound like me.
I don’t like how that comes across.
There were also decisions about what content to bring over from the old site.
I’d accumulated 13 articles over the years, and many now feel out of date. Rather than turning the rebuild into a full content migration project, I picked a handful to bring into the new Writing section. I’ll preserve the old URLs and deal with the rest as a separate project later.
Images were another potential rabbit hole.
Most of my professional photos are years out of date. Someone at a conference recently told me they almost didn’t recognise me from my LinkedIn photo.
Probably time for an update.
I started experimenting with AI images instead, but quickly realised I was turning that into a project of its own.
So I made a decision: no images.
There were smaller technical rabbit holes too: installing new software, figuring out Git, GitHub and how to run the site locally, my project files somehow syncing through OneDrive even though I don’t use OneDrive, and the usual slog through Cloudflare, DNS and getting the site live.
But the technology wasn’t what slowed me down most.
The decisions were.
Before and after
The difference is pretty significant.
Writing


About


The new site is simpler.
It’s faster, the typography and layout are better, and it feels a lot more like me.
More importantly, it’s a website I’m happy to share.
Learning by building
Over the last two weeks, I’ve spent a lot of time learning about building with AI: watching YouTube videos, reading newsletters, joining AI communities, starting an AI course, and talking to people about what they’re building and which tools they’re using.
All of that has been useful.
But building something was different.
I had to turn that information into decisions, then work through all of the micro-problems of going from idea to a published website.
I went from design to a local build, GitHub, Cloudflare, DNS and finally a live website.
And I deliberately reduced the scope of the first version.
The old articles can wait. Images can wait. Sanity CMS can wait until phase two.
The goal of this project wasn’t to build the perfect personal website.
It was to go through the process from beginning to end and be better prepared when I do it again with TeamUp and Bean Ninjas.
The next test is whether having a website I like means I start writing more often.