← Writing

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.

BeforeThe old homepage: a plain white page with a small Meryl Johnston wordmark, a large heading Founder, accountant and creator, and two text columns headed Health, wealth, and happiness and Now Page.
AfterThe new homepage: a dark navy hero with the serif headline Founder, accountant and builder, a two-line intro, and an About section with a headshot and three paragraphs below.

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 setupNew setup
Notion for contentMarkdown / MDX
Super for the websiteAstro
Hosting through SuperCloudflare Pages
No version controlGitHub
Template-based designClaude Design
No coding workflowClaude 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

BeforeThe old writing index, headed Posts, listing about thirteen article titles as plain document links, followed by a Videos section.
AfterThe new Writing page: a navy hero reading Notes on building businesses and what I'm learning along the way, then five article titles grouped under 2022 and 2021.

About

BeforeThe old About page, headed My Story, with a photo of me and a laptop captioned Caption here, a short summary, and a dated career timeline.
AfterThe new About page: a navy hero with the headline I'm an accountant turned founder, then body text with Early days and 2015 markers in the left margin.

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.