Until a few weeks ago, writing an article for this blog meant opening the code editor, creating a markdown file in a specific folder, checking the frontmatter was right, committing, pushing, waiting for the deploy. For one article. Every time.
It wasn’t terrible: it worked. But it was awkward in that sneaky way that makes you postpone things. “I’ll write that piece tomorrow”, which becomes next week, which becomes never.
The old system: nice in theory, awkward in practice
The site ran on Astro with static pages. Articles were .md files in a project folder. Every post had its YAML frontmatter at the top (title, date, tags, description, image) and then the content in markdown.
To publish I had to:
- Open VS Code
- Create the file in the right folder, with the right name
- Write the frontmatter without errors (one comma out of place and the build blew up)
- Write the content in markdown
- Test locally that everything was fine
- Commit, push, wait for the Cloudflare Pages deploy
Six steps. To publish a thought.
And we won’t talk about editing an existing article: find the file, open it, edit, re-commit, re-push. Or uploading an image: save it in the public folder, reference it with the relative path in the markdown, hope you didn’t get the path wrong.
It worked, yes. But every time there was that friction that turned a five-minute task into a twenty-minute ritual. And friction, over time, kills consistency.
The idea: what if I built myself an admin panel?
At a certain point I asked myself: how long would it take to build a decent admin panel? Not WordPress, not Ghost, not a headless CMS with a monthly subscription. Something of mine, that does exactly what’s needed, nothing more.
The traditional answer would have been: a lot. Days of work to build it, or weeks to adapt an existing CMS, with its opinions about how things should work, its dependencies, its updates to manage.
But the answer in 2026 is different.
Building has become faster than choosing


What I did was sit down with Claude Code (an AI generative tool applied to code) and build the system piece by piece. Not generating random code to copy and paste, but working with it the way you would with a very competent and very fast colleague.
The result is a complete admin panel that lets me:
- Write articles with a WYSIWYG editor: no more hand-written markdown, I write as in a normal text editor, with a toolbar for bold, italic, headings, lists, quotes, code, links, and images
- Drag images directly into the editor: it uploads them automatically to Cloudflare R2 and inserts them at the right point
- Manage metadata in a clear sidebar: publication state, date, tags, cover image, all within reach
- Save with one click: like in any normal application
- See the article list in a dashboard with immediate stats
And all this saves the content as markdown in the database, so the blog’s frontend renders them exactly as before.
What’s under the hood
For anyone curious about the technical part: the site still runs on Astro, but it has moved from static generation to server-side rendering on Cloudflare Workers. That means pages are generated on the fly when someone visits them (for the first time), which lets me have dynamic content without giving up speed.
The data lives on Cloudflare D1, a SQLite database distributed across Cloudflare’s edge network. Images on Cloudflare R2, an S3-compatible object store. Authentication uses JWT with tokens signed via the Web Crypto API.
The WYSIWYG editor is based on Tiptap, an editing framework built on ProseMirror (the same engine underneath editors like Notion). The interesting part is that under the WYSIWYG, content is converted to clean markdown via a dedicated extension. I write visually, I save in a portable format.
For security—because an admin panel exposed on the internet has to be secure—there’s:
- Cloudflare Turnstile on the login page (the invisible successor to CAPTCHA)
- Rate limiting to prevent brute-force attacks
- Strict validation on every input, every upload, every file path
- Constant-time comparison of credentials, to prevent timing attacks
- Magic-bytes verification on uploaded files, not just extension checking
No admin framework, no plugin, no heavy dependency. Just the code that’s needed, where it’s needed.
The real change isn’t technical
The interesting part of this story isn’t the technology. It’s the change in the cost-benefit calculation.
Until recently, faced with a need like this, the options were:
- Adapt something existing: WordPress, Ghost, Strapi, dozens of CMSes with their opinions, their learning curves, their recurring costs, their vulnerabilities to update
- Have it built: a quote, waiting times, feedback iterations, compromises on how “the framework wants it to work”
- Build it yourself: weeks of work, testing, debugging, with the real risk of giving up halfway
Today there’s a fourth option: build it yourself, with AI as accelerator. Not as a substitute for thinking, but as an amplifier of execution capacity.
I knew what I wanted. I knew how it should work, what user experience I was looking for, what compromises I was willing to make. AI turned that vision into working code at a speed that was previously simply impossible for a single person.
And it isn’t “generated” code: it’s code I guided, reviewed, tested, and understand line by line. Because the point isn’t to delegate the thinking—it’s to delegate the typing.
Faster to build it than to ask for a quote
This sentence sounds provocative, but for a certain category of projects it’s becoming literally true.
I’m not talking about enterprise systems, platforms with thousands of users, or mission-critical software. I’m talking about all those “medium” projects that used to fall into a no-man’s land: too specific for an off-the-shelf solution, too small to justify a serious investment, too tedious to do by hand.
My admin panel is exactly in that category. No existing CMS would have done exactly what I wanted the way I wanted it. Having someone else build it would have required briefs, quotes, reviews, deploys. Doing it myself by hand would have required weeks stolen from evenings and weekends.
Instead I built it in 25 minutes. It works. It’s mine. It does exactly what’s needed. And if tomorrow I want to change something, I can do it in minutes.
The future is custom-made
I think we’re entering an era where custom software becomes accessible to anyone with a clear vision of what they want and decent technical skills. You don’t need to be a team of developers anymore. You don’t need a serious budget. You need to know what you want and to be able to guide the tool.
It’s like the move from artisan tailoring to ready-to-wear, but in reverse: we’re going back to bespoke, only now the tailor is extremely fast and costs a fraction of before.
For people working in digital (developers, designers, marketers, founders), this obviously changes the calculations.
Key takeaways
Building custom is now faster than choosing an existing solution, for medium-sized projects.
AI doesn’t replace product thinking, it amplifies the execution capacity of someone who already knows what they want.
The middle tier of CMS SaaS is the first to erode; enterprise stays, but for infrastructure, not for the product itself.
Questions & answers
Why is "building a custom CMS faster than finding an off-the-shelf one" now true?
Because with agents like Claude Code, 25 minutes is enough to turn a static Astro blog into a dynamic system with WYSIWYG editor, authentication, media library, redirect handling. The learning curve of an off-the-shelf CMS (WordPress, Strapi, Sanity, Contentful)—installation, customisation, compromises, lock-in—is longer than the time needed to write exactly what you need. The build-vs-buy ratio has shifted.
When does a custom CMS make sense vs a ready-made one?
It makes sense when: (1) requirements are precise, not generic; (2) you already have a site or stack the CMS has to respect, not impose itself on; (3) you want zero dependence on a SaaS that can shut down, change pricing, modify the API. It doesn’t make sense when an off-the-shelf CMS already does what you need and the integration costs are low—for very standard projects boring pragmatism stays unbeatable.
What changes strategically for SaaS companies selling CMSes?
The lower band of the market (personal blogs, small publishers, portfolios) starts draining toward custom solutions. The high band (enterprise content operations) stays—because the value there isn’t the CMS but the surrounding infrastructure (CDN, security, workflows, compliance). The companies in the middle, selling generic CMSes at SaaS prices, have to clarify quickly what makes them defensible: advanced features? Network effects? Accumulated customer data?
What does this mean for people working in digital product?
Value no longer sits in access to prepackaged functionality but in the judgement about which functionality is actually needed. A product manager who today accepts every constraint of the chosen CMS because “everyone uses it” is operating on pre-GenAI assumptions. People who can think in specs, can commission an AI agent to build something custom, and can recognise when custom isn’t the right answer, operate on a different productivity level.