Skip to content
Work4 min read

Two weeks later: a second site, a new name, and the day I broke it

Since rebuilding this site, the CMS picked up a second site, albums, one-click deploys and a new name, PaddockCMS. Here's what changed, what it costs, and the bug that made a live site unclickable.

When I rebuilt this site and its CMS, I ended with a short "what's next" list. Two weeks in, some of that list is done, some of it changed, and a lot of things that weren't on it happened anyway. Here's the update.

A new name: PaddockCMS

The CMS used to be called FireCMS, because it started life on Firebase. None of it touches Firebase anymore. Posts are Markdown files, media lives on Cloudflare R2, and the CMS doesn't care where a site is hosted. So the name had to go.

It's PaddockCMS now. The paddock is where race cars get worked on between sessions, which is a pretty good description of what a CMS is for. The old post's link still works; it redirects here.

A second site: Tuned Authority

The biggest change is that PaddockCMS now runs more than one site. Tuned Authority is a car-culture blog covering racing news, grassroots drift, features and video. It's built on the exact same stack as this site and shares its content engine, so both sites get every improvement at the same time.

Building a second site on top of the first was the real test of the rebuild. If the pieces were tangled together, this is where I would have found out. Mostly they weren't. Each site has its own sections, its own media bucket and its own deploy, and the CMS just shows a site switcher.

Tuned Authority runs entirely on Cloudflare: static pages, a contact form and a corrections and removal request form, all on the free tier. It also has proper Privacy, Terms and Corrections pages. If you post photos of real people at real events, you should say plainly how you handle mistakes and removal requests.

What PaddockCMS learned to do

A car blog is mostly photos, and a lot of them, so most of the new features are about media:

  • Albums. Photos are grouped by event, so a 100-photo shoot is one thing to manage instead of 100.
  • Multi-select. Pick a whole set of photos and insert them into a post at once, as a gallery or one by one.
  • A real media viewer. Bigger thumbnails and a full-screen view, so I can actually tell two nearly identical shots apart.
  • Smaller copies for phones. Every photo also gets an 800px version. Galleries load that, and the full-size image only loads when you open it.
  • Update callouts. A dated "Update" box for posts that change after they're published, like the one now sitting at the top of the original post.
  • Publish now deploys. Hitting Publish commits, pushes and rebuilds the live site. It refuses if anything unexpected is uncommitted or I'm on the wrong branch, so a half-finished experiment can't sneak out with a blog post.

The day I broke it

That last feature came with a lesson. The first time the CMS deployed a site by itself, Tuned Authority went live looking perfectly normal and doing nothing. Links changed the URL, but the page never changed. On a phone you couldn't tap anything at all.

The cause was small. The CMS runs on a development server, and the deploy it started inherited the CMS's environment. That told the build it was a development build, so the site shipped code that didn't match its own prerendered pages. Every check said the site was up, because it was. It just wasn't working.

The fix was to build in a clean environment every time. The bigger change was what "verified" means: loading the page isn't enough anymore, so checks now actually click through it. I also want to be honest that this slipped past both me and Claude. Working with an AI that tests its own work is great, but it only tests what you both think to check.

What's even more awkward was that I had just sent out a link to a event organizer for some photos I posted from an old event. So it was like a 15 minute scramble to identify and fix the issue making sure that the site was actually working if he shared the link.

A security check and a budget

Before uploading hundreds of photos, I stopped to audit everything:

  • Security. I deleted an old upload service with no authentication from the previous setup. Both sites now send stricter security headers, and I patched the dependencies.
  • Cost. I ran the numbers on what posting a lot of photos would actually cost.

The answer is still $0. The pages are static files, which are free to serve at any traffic level, and R2 storage has no bandwidth fees. The only limit that matters is storage. Even with the extra phone-sized copies, I'm nowhere near the free 10 GB.

The old "what's next" list

  • Moving onto Cloudflare so publishing deploys automatically: done. Publishing deploys automatically now, and as of this post, this site runs entirely on Cloudflare too, the same way Tuned Authority does. Firebase isn't part of it anymore.
  • PaddockCMS v3, with content in the cloud and a phone-friendly editor: not started. Making it run two sites mattered more first.
  • Filling the empty sections: the Garage section has a drift car post now. 3D and music are still waiting on me.

What's next, again

  • A lot more Tuned Authority posts, now that adding 50 photos takes minutes instead of an evening.
  • PaddockCMS v3, eventually, so I can post from the track instead of from my desk.

This one was also written and published with PaddockCMS, under its new name.