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.