Projects

Builder Journal: The Site Engine I Never Stopped Rebuilding
Builder Journal

Builder Journal: The Site Engine I Never Stopped Rebuilding

I didn’t invent the idea of a “site engine” recently.

I’ve been circling the same concept for years, sometimes building it myself, sometimes outsourcing it to a CMS, sometimes just avoiding new site ideas because I didn’t want to pay the setup tax again.

This time, I finally shipped the version I actually wanted, and the way I shipped it surprised even me.


The original itch: “why are we building sites by page?”

A long time ago, I learned that many people priced websites by page.

That never sat right with me, because most sites are the same shapes repeated:

  • shared layout

  • shared navigation

  • shared styling

  • different content

If you understand databases, you naturally want to separate structure from content.

So I did, first in PHP, later more cleanly with CodeIgniter. The idea worked. I built sites that way.

Then real life happened, client needs happened, and I did what a lot of practical people do.

I moved to WordPress.


The long detour: WordPress solved “publish”, but not “start”

WordPress (and builders like Elementor or Avada) can absolutely ship real sites.

I still have sites running there today, including client work and my own projects.

But it never solved the part that drained me the most:

Starting a new site still felt like paying a tax.

Not hard, just repetitive:

  • baseline structure

  • blog wiring

  • media setup

  • SEO basics

  • theme tweaks

  • publishing rituals

That’s how “someday” sites become placeholders.


The nudge that mattered: watching creators get stuck

In a marketing class for music producers, I watched creative people hit the website module and stall out.

Tools often force a bad trade:

  • easy, but everyone ends up with the same vibe

  • flexible, but now you’re doing technical labor instead of creative work

That was the signal I couldn’t ignore.

People don’t need more generic templates, they need a system that gives them momentum while still leaving room for personality.


This time I used ShipKit.ai, and I didn’t write the code

Here’s the key difference with Headstring Web.

I built it from a ShipKit.ai template, the kind of starter that’s designed around AI workflows and background tasks, especially for things like long-running jobs and processing. 

Then I leaned into a workflow that felt less like “coding” and more like “directing”:

  1. ShipKit gave me a strong starting structure

  2. I used AI-driven tasks to add features step-by-step

  3. I mostly did verification:

    • does it compile?

    • does it behave correctly?

    • does the data model hold up?

    • does the UI match the intent?

    • do edge cases break it?

For this entire project, I did not hand write a single line of code.

I made decisions, reviewed what got generated, tested it, and kept moving.

That experience made a quote click for me that I had seen online, and it stopped sounding crazy.

Eden Marco wrote on LinkedIn: “I haven’t written a line of code in over a year,” in the context of using coding agents differently, more like delegated systems than copilots. 

I’m not claiming I’m living that life forever, but I now understand how someone gets there.


What Headstring Web is, in practical terms

The backbone is still the same idea I had years ago, just modern and visual:

Sites → Pages → Sections → Blocks

From there, the tool became a real daily driver:

  • Visual building with 18 blocks and lots of templates

  • Themes via CSS variables, plus AI theme generation to skip blank-canvas paralysis

  • Blog system that feels native, not bolted-on

  • Publishing rules that make draft vs published predictable

  • Custom domains through Vercel, plus instant hosting at /sites/[slug]

And yes, this site lives inside the engine, which keeps me honest. If something feels clunky, I feel it immediately.


Why I think this could help others, even if I built it for me

First, it’s for me. It stops me from rebuilding the same foundation over and over.

But I also think it fits a bigger group, especially creators:

  • people who want structure that prevents chaos

  • people who still want their site to feel unique

  • people who get stuck at “setup” and never reach “publish”

The best compliment I can imagine is someone saying: “I finally shipped my site, and it still feels like mine.”

Handheld blood glucose meter and scattered test strips under dramatic amber side lighting
Builder Journal

Every Fasting Reading Showed Up at Lunch

I pulled 800 readings off a blood glucose meter with a browser tab. The meter was right about all of them. My parser was six hours wrong about every single one.

Open card catalog drawer with one blank index card lifted from the row
Builder Journal

The Dataset in My Notes Wasn't the One on Disk

Five separate bugs in one week of training-data work, and every one of them was the same bug: I had been auditing the description of the data instead of the data.

Rear of a small computer, one cable connected, one unplugged in shadow
Builder Journal

The Fixes That Lived on One Machine

My deploy box is not allowed to commit code. Last week I found out it had been quietly fixing itself anyway, and those fixes existed in exactly one place on earth.

Open handwritten notebook, pen and TV remote on a dark table in television glow
Builder Journal

The Notebook Was The Dataset

My wife has written down every movie we watch together since 2023.

Hourglass with sand halted mid-fall, amber server lights glowing behind
Builder Journal

The Timeout That Measured Nothing

My UI announced a failure for a job that was fine. Three fixes later, the one that actually solved it was deleting a client-side timer that measured nothing.

Open card catalog drawer with one index card missing from the row
Builder Journal

The Bugs That Only Appear on the Second Run

Putting a working pipeline on a schedule surfaced four bugs that were invisible on run one, including one that ate 12,563 business formation records.

Brass balance scale tipping under a thick stack of manuscript pages
Builder Journal

The File That Was 269 Characters Too Big

My writing app's assistant kept saying it couldn't see the world bible. It took four commits to find out the file was 269 characters over the budget.

Blurred modal dialog on a dark screen with one amber highlighted button
Builder Journal

The Allow Button Doesn't OCR

Permission dialogs sat on my agent's console until I happened to notice. Building a watcher that could see them, and click them, meant OCR, geometry, and one very small allowlist.

A small aluminum desktop computer on a shelf, single amber status light glowing, network cable fading into shadow
Builder Journal

The Mac Mini Is the Cloud Now

This week I deleted a cloud job runner and moved my site builder's AI onto a Mac Mini in my house. The reasoning beat the wiring.