
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.