Home Journal About

The Legend of “Sleepy Joe” and the Headless CMS


I can’t remember the last time I wrote a headline that corny. I also can’t remember the last time I thought of Sleepy Hollow.

I read it in college. I watched the Johnny Depp movie in high school. And I watched Disney’s The Adventures of Ichabod when I was a kid.

But I guess a late night working on a “headless CMS” project an hour after taking Zzz Quill makes me think about weird stuff.

Like what the hell is a headless CMS — and why is it named that.

Nice pumpkinhead

A quick Google search says it’s “a backend-only content management system that acts as a centralized repository, allowing content to be created, managed, and delivered via APIs to any frontend platform.”

Huh?

For content people, it’s basically a decapitated WordPress.

The CMS is the body. Astro, my frontend display layer, is the head. Railway is the brain. Together they make a complete monster, which feels appropriate.

Crossing the bridge

There’s a moment in every dev session where something breaks and you have no idea why. Just like Ichabod, I get superstitious when I’m in over my head. On these dev projects, when I don’t know what I’m doing, I cross my fingers and keep moving. When the error message is in a language I don’t speak and the terminal is staring back at me — I don’t close the laptop.

I had about six of those moments tonight.

I’m not a developer. I’m a journalist and content writer who decided he didn’t want to pay for WordPress. That decision sent me down a rabbit hole — Railway for the backend, Astro for the front, Cloudflare to ship it — all passing notes to each other like a group chat I set up myself called an API (Application Programming Interface).

An API is basically a messenger. It’s what lets two separate systems talk to each other. Like a waiter taking your order to the kitchen and bringing the food back.

I didn’t write the code. Claude did. My job was to have the idea, paste commands into a terminal, take screenshots when things broke, and not lose my mind when they broke four times in a row.

Staying on my horse

What I’ve noticed after a few of these sessions is that the panic gets shorter.

You start recognizing patterns: the shape of an error, the rhythm of a fix. You stop reading the error message like it’s a personal attack and start reading it like a clue.

Tonight’s villain wasn’t a ghost Hessian soldier. It was a JSON file — a simple text file that computers use to pass information back and forth — that kept coming back empty.

Like sending a letter and getting a blank envelope back. Three times. Eventually we switched approaches and it worked. I don’t fully understand why. Claude does, and I just message Claude until it works.

The stack is real now. I type a post into a clean editor, hit publish, and it shows up on my site. No monthly fee. No plugin conflicts. No WordPress.

I successfully published this article — and I still have my head.