Technology

I got tired of WordPress. So I built my own CMS.

It started with one small job. A WordPress site I use kept crashing, and all I wanted was to add a user. Behind that one task sat a pile of plugins, a heavy PHP stack, and updates I never asked for. All of it to serve a few pages of writing.

Then there was the address. My blog lived at blog.parthans.com. Google treats a subdomain largely as its own site, so the writing never fully benefited from parthans.com, and parthans.com never benefited from the writing. Meanwhile my main site is plain HTML, and whatever I put there gets picked up well.

So the writing has moved home, to parthans.com/blog. Every old address redirects to its new one, so no link anyone has shared breaks.

I sat down with Claude, wrote out what my CMS should be, and we built it. Under three days.

What it does:

  • I write in a private admin. It publishes plain HTML straight into my sites. Nothing runs on the public pages, so there is far less to attack.

  • One backend for several sites, with users assigned per site. Adding a user takes a minute.

  • Two-factor sign-in, behind Cloudflare Access, with every permission checked on the server.

  • An AI challenge step. A second model reads my draft and asks the questions a sharp editor would: what am I assuming, who is this for, what can go. It leaves the writing to me. It also keeps score of how often I act on its questions. If the number stays low, I switch it off.

  • A check against my own writing rules. Banned words, filler transitions, missing alt text. Yes, it flags em dashes.

  • Featured images in my house style, with my logo as a watermark.

  • Posts to LinkedIn and X once a post is live, after checking the page actually loads.

  • Encrypted backups every night.

The one rule I built in from the start: it never publishes on its own. Scheduling a post counts as approving it in advance. Everything else waits for me to press the button. I have run content automation before, and I know where the judgement has to stay.

This is the first post it published.

Send feedback

Goes to my inbox. Nothing is published.

All posts