For years, this website ran on WordPress with a page builder bolted on top. And for years, I settled.
Not because I lacked ideas. I had plenty. But almost every time I wanted to build something a little different – a custom layout, a specific interaction, a feature that didn't exist as a plugin – I hit the same wall.
I'm not a developer. I can hold my own technically – I understand HTML and CSS, I can read a stack trace, I know my way around popular CMS systems and CDNs – but I was never quite technical enough to actually build the things I wanted. So I'd poke around in the page builder for an hour or two, get frustrated, and eventually say "screw it" and ship whatever was good enough.
The alternatives were always the same two options: pay someone to build it properly, or spend a weekend – or three – learning just enough code to hack it together myself. Neither felt worth it for a small personal site, so "good enough" won, every time.
That's no longer true. This site now runs on EmDash, and the way I actually build things has completely changed.
What Is EmDash?
EmDash is an open-source, Astro-native CMS built to be fast, type-safe, and – increasingly relevant to everything below – designed with AI coding agents in mind from day one. If you want the full technical breakdown, Joost de Valk wrote an excellent deep dive on it.
I'm Not a Developer, and That's the Point
Here's what actually changed: I stopped trying to build the website myself, and started telling Claude Code what I wanted instead.
I don't write the components. I don't touch the CSS. I describe what I want in plain language – create a testimonials carousel section that automatically rotates between the testimonials, add visual hover effects to this and that button, remove this photo only on mobile screens – and Claude does the rest. Correctly, almost every time, on the first or second attempt.
That's not a small thing for someone like me. For the first time, I can build a genuinely modern-looking website without being the one who has to know how to build it.
And don’t get me wrong, I know you don’t need EmDash in order to do this. You can connect Claude Code to WordPress as well. I have tried it and achieved some success. But hear me out on why I like EmDash so much better.
Why Claude Code Does Such a Good Job With EmDash
This isn't luck, and it isn't just that AI coding tools have gotten good – though they have. It's that EmDash was deliberately built agent-first.
Older CMSs like WordPress were designed for a human clicking through an admin dashboard, and a developer writing PHP inside a templating system that predates most modern coding conventions. An AI agent working in that codebase has to fight the same things a human developer does: scattered configuration, magic hooks, global state, and a plugin ecosystem where every plugin does things its own way.
EmDash skips almost all of that. It's just an Astro integration – regular TypeScript, regular components, a typed content model generated straight from your schema. When I ask Claude to change something, it's reading and writing the same kind of clean, typed, conventional code any well-structured modern app would use. There's no framework-specific dialect to guess at, no ambiguous "what does this hook actually do" moment. The types alone tell it exactly what fields exist, what shape the data is in, and what will break if it gets something wrong.
An agent that can see the whole shape of your data and your templates in plain TypeScript is going to make far fewer mistakes than one guessing its way through a decade of accumulated WordPress conventions. That's the real unlock – not that Claude is smart (though it is), but that EmDash gives it something clean to be smart about.
A Modern Website, Without Being a Developer
Put those two things together – an AI agent that's genuinely good at this, and a codebase built for it to be good at this – and the result is that someone like me, who was never going to become a developer, can now build and maintain a website that looks and performs like one built by an actual dev team.
I'm not exaggerating when I say every single visual change I made on this site – the homepage layout, the testimonials carousel, the footer structure, the service pages – happened because I described it and Claude built it. Not a template gallery. Not a page builder with 40 nested <div>s. Actual, purpose-built components.
It's Not Just Claude Code – EmDash's Own Editor Is Genuinely Good
I want to be fair to EmDash here, because it would be easy to read everything above and assume this only works if you're comfortable typing instructions into an AI coding tool.
That's not the whole story. A lot of what I do day to day on this site never touches Claude Code at all. EmDash ships a proper visual admin – a real browser-based editor where I write and edit blog posts (including this one), manage testimonials, update service descriptions, upload images to the media library, and rearrange the navigation menu, all without writing a line of code or prompting anything. There's even an edit toolbar that appears right on the live page when you're logged in, so I can click a section on the actual site and edit it in place.
Claude Code is what I reach for when I want to change how the site is *built* – a new layout, a new component, a structural change. The visual editor is what I use for the day-to-day job of actually running a website – writing content, swapping images, tweaking copy. Most content platforms make you choose between "flexible but you need a developer" and "easy but limited." EmDash is the first CMS I've used where I get both, depending on which one the task actually calls for.
Why Astro + TypeScript Means a Genuinely Fast Website
EmDash is built on Astro, and Astro's whole premise is sending as little JavaScript to the browser as possible.
Most website builders and a lot of modern frameworks ship a big chunk of JavaScript to every visitor, whether that visitor's page needs it or not, and then have the browser "hydrate" the whole page before anything is properly interactive. Astro flips that: it renders your pages to plain HTML on the server by default, and only sends JavaScript for the specific little pieces that actually need to be interactive – a search box, a theme toggle, a carousel. Everything else is just HTML and CSS, which any browser can display instantly.
TypeScript adds a different kind of speed – not page-load speed, but development speed and reliability. Because EmDash generates real types from your content schema, mistakes get caught before the code ever runs, instead of showing up as a broken page in production. For an agent like Claude making changes on my behalf, that means it can move fast and still catch its own mistakes immediately.
The result, in plain terms: fewer kilobytes sent to the browser, less work for the browser to do, and a site that simply loads faster than most WordPress installs ever will – page builder or not.
Why That Same Architecture Is Also an SEO Advantage
I'm an SEO consultant, so I'd be doing you a disservice if I didn't spell this part out.
A server-rendered, minimal-JavaScript site like this one starts from a massive structural advantage – there's simply less that can go wrong with loading performance, because there's less happening in the first place.
But it goes beyond speed.
Clean, semantic HTML generated directly from a typed content model is exactly what search engines have always wanted from a website – clear headings, clear structure, no page-builder div soup obscuring what the content actually is. When your CMS enforces a real content model instead of letting you free-form a page in a visual builder, the output tends to be more crawlable and easier to parse almost by default.
The Web Is Becoming Agent-First – And That's the Bigger Reason I Made the Switch
Here's the part I think matters most going forward: an increasing share of the clicks on this website – and any website – are not going to be humans anymore.
They're going to be AI agents – ChatGPT, Perplexity, Claude, Grok, Gemini, and whatever comes after them – doing research on behalf of a human who asked a question. That shift is already underway, and it's not slowing down.
A website built "the old way" is genuinely harder for those agents to parse. Page-builder output tends to be a deeply nested mess of generic <div>s and inline styles, with the actual content buried several layers deep and no consistent structure from one page to the next. An agent trying to extract "what does this page actually say" from that has to do a lot of guessing.
A site built on Astro with a real content model does the opposite. The HTML is clean and semantic. Headings are headings. The content structure is consistent across every page because it's generated from the same typed schema every time, not hand-assembled in a visual editor. That's exactly the kind of structure that's easy for a language model – or the tool it's using to fetch and read a page – to understand quickly and accurately.
I don't think "built for AI agents" is a future nice-to-have. I think it's rapidly becoming table stakes, the same way mobile-friendliness was a decade ago. Sites that are easy for agents to read and represent accurately are going to get cited, recommended, and clicked more often, in the same way sites that are easy for Google to crawl are more likely to win in “classic” search.
EmDash + Claude Code vs. WordPress + a Page Builder
To make the difference concrete:
- Content structure: EmDash enforces a typed content model from the start. WordPress with a page builder lets you free-form every page differently, with no real schema behind it.
- Output: EmDash renders clean, minimal-JavaScript HTML by default. Page builders typically output deeply nested markup with a lot of unnecessary JavaScript shipped to every visitor.
- Making changes: With EmDash and Claude Code, I describe what I want and get working, typed, conventional code. With a page builder, I was limited to whatever the builder's UI happened to expose, and anything beyond that meant custom PHP or paying a developer.
- Speed: Astro's server-first rendering plus a typed schema is a fundamentally faster starting point than a plugin-heavy WordPress stack, regardless of how well that stack is optimized afterward.
- AI-readiness: A clean, typed, semantic codebase is both easier for Claude to edit correctly and easier for AI agents to read and understand once it's live. The same properties that make it easy to build are what make it easy to be understood.
- Who can build with it: This is the one that matters most to me personally. WordPress and page builders were built for developers, or for non-developers willing to accept real limits. EmDash plus an AI coding agent means a non-developer can direct real, custom development – not choose from a template gallery, but actually build the thing they had in mind.
I'm Not Married to EmDash, and Neither Should You Be
Everything above is a genuine account of my experience, not a sales pitch, so let me be equally honest about the other side.
EmDash is young. It doesn't have years of production battle-testing behind it, and a couple of months of active development – however good that development has been – isn't the same thing as a platform that's been quietly running thousands of real sites for a decade.
It also doesn't have a plugin or theme ecosystem to speak of yet. WordPress has a gazillion plugins, EmDash has close to none. Historically, CMS adoption has been driven at least as much by the size of that ecosystem as by technical merit – plenty of technically excellent platforms have struggled specifically because they never built the plugin and theme community that makes a CMS easy to adopt at scale. There's a real chance EmDash never gets there either.
Governance is worth a mention too. It's MIT-licensed and open source, which I like, but it's also closely tied to Cloudflare, and long-term open-source commitments from a single company backing a project are never guaranteed. The deployment story is also most polished specifically for Cloudflare – running it elsewhere is possible, but far less proven.
None of that changes my experience so far. It changes how I'd frame my recommendation: I'm not telling you EmDash is definitely the CMS that wins. I don't know that, and neither does anyone else right now.
The Direction Matters More Than the Winner
What I am confident about is the direction, not the specific tool.
The web is moving toward AI-native content platforms and AI-driven building, and toward websites structured to be understood by agents as readily as by humans. Whether EmDash ends up being the platform that wins that shift, or whether something else currently being built takes its place – possibly something that doesn't even exist yet – doesn't really matter to the argument I'm making.
What matters is that this is the direction. Clean, typed, agent-legible architecture is going to keep winning over div-soup page builders, regardless of whose logo ends up on top. Building on that kind of foundation now, even on a young platform, puts you ahead of that curve rather than catching up to it later.
If Your Website Still Feels Like a Compromise
I spent years accepting "good enough" because the alternative was outsourcing everything or learning to code myself, and neither made sense for a small personal site.
That trade-off doesn't exist anymore. If you've been putting up with the same compromise – a website that's fine, but not what you actually wanted, because building the real version felt out of reach – it's worth knowing that gap has genuinely closed.
I help businesses build exactly these kind of future-ready websites – fast, SEO-ready, and built for the AI-agent-driven web that's already arriving. If that sounds like a conversation worth having, get in touch.




No comments yet