<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mathieu Muller</title>
    <description>The latest articles on DEV Community by Mathieu Muller (@tieum).</description>
    <link>https://dev.to/tieum</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3943919%2F07243d2e-d040-4be2-b6db-ebe536730513.png</url>
      <title>DEV Community: Mathieu Muller</title>
      <link>https://dev.to/tieum</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tieum"/>
    <language>en</language>
    <item>
      <title>Why I Built My Own Site with Astro, Not WordPress when I use WordPress for a Living</title>
      <dc:creator>Mathieu Muller</dc:creator>
      <pubDate>Thu, 21 May 2026 12:10:32 +0000</pubDate>
      <link>https://dev.to/tieum/why-i-built-my-own-site-with-astro-not-wordpress-when-i-use-wordpress-for-a-living-236l</link>
      <guid>https://dev.to/tieum/why-i-built-my-own-site-with-astro-not-wordpress-when-i-use-wordpress-for-a-living-236l</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The short version —&lt;/strong&gt; WordPress is a brilliant tool — it's also the wrong tool for a site that's nothing but articles, calculators, and a sitemap. Tinkernotes has no logins, no comments, no checkout, and no database it can't live without. So it's an &lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;Astro&lt;/a&gt; site built as static HTML and served from &lt;a href="https://pages.cloudflare.com/" rel="noopener noreferrer"&gt;Cloudflare Pages&lt;/a&gt;. The result is a site that costs £0/month to host, ships almost no JavaScript, and can't be hacked the ways WordPress sites get hacked. If you're a WP dev sitting on a content project, this is the build I'd push you towards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've spent eight years shipping WordPress and WooCommerce for a UK agency — custom plugins, themes, gateway integrations, the lot. WordPress pays my mortgage. So the most reasonable question about this site is: why isn't it WordPress? I've had that question from two developers I respect already. Here's the long answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The choice I was expected to make
&lt;/h2&gt;

&lt;p&gt;If you'd asked me to build a content site any year from 2014 to about 2022, the answer was reflex: WordPress. Pick a host, install WP, drop in a block theme or build one, add Yoast for SEO, write. I could have had Tinkernotes live in an afternoon and never thought about it again. That's not a knock on WordPress — that &lt;em&gt;is&lt;/em&gt; WordPress's superpower. It collapses "publish a website" into a solved problem.&lt;/p&gt;

&lt;p&gt;But "I already know how" is a sunk cost, not a reason. So before defaulting, I wrote down what this site actually has to do:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Render articles, reviews, and guides from text I write.&lt;/li&gt;
&lt;li&gt;Run two interactive calculators in the browser.&lt;/li&gt;
&lt;li&gt;Generate a sitemap, meta tags, and structured data.&lt;/li&gt;
&lt;li&gt;Be fast, and stay cheap.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's the whole list. Notice what's &lt;em&gt;not&lt;/em&gt; on it: no user accounts, no comments, no shopping cart, no form that writes to a database, no content edited by anyone but me. The moment I saw the list written out, WordPress stopped looking like the obvious answer and started looking like a lot of moving parts solving problems I don't have.&lt;/p&gt;

&lt;h2&gt;
  
  
  What WordPress would be carrying that I don't need
&lt;/h2&gt;

&lt;p&gt;A standard WordPress install is a PHP application that boots on every request, talks to a MySQL database, runs the plugin and theme hook stack, and assembles HTML — then you bolt a caching plugin on top to &lt;em&gt;avoid&lt;/em&gt; doing most of that. It's a dynamic system pretending to be a static one because, for a content site, static is what you actually want.&lt;/p&gt;

&lt;p&gt;Everything dynamic about WordPress is also its attack surface and its maintenance bill:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The database.&lt;/strong&gt; A dependency, a backup job, and a thing that can get out of sync.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHP version drift.&lt;/strong&gt; Hosts deprecate, plugins lag, you babysit the gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugin updates.&lt;/strong&gt; Yoast, a cache plugin, a security plugin — each one a small recurring risk and another notification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The login page.&lt;/strong&gt; &lt;code&gt;/wp-admin&lt;/code&gt; and &lt;code&gt;/wp-login.php&lt;/code&gt; are probed by bots within minutes of going live. Every WP site I've ever run shows it in the logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that is hard for me — I do it for clients every week. But it's all &lt;em&gt;labour&lt;/em&gt;, and it's labour in service of capabilities this site will never use. &lt;strong&gt;Zero&lt;/strong&gt; of those moving parts make a single article load faster for a reader.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The framing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A blog is read far more often than it's written. WordPress optimises the writing moment — the dashboard — and pays for it on every read with a PHP and database round-trip. A static site inverts that: do the work once at build time, then serve plain files forever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The stack I chose, and what each piece does
&lt;/h2&gt;

&lt;p&gt;Nothing here is exotic. It's the boring, well-trodden static stack — which is exactly the point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;Astro&lt;/a&gt;&lt;/strong&gt; is the framework. I write content as MDX — Markdown with frontmatter, plus the ability to drop components into the prose. Astro renders every page to plain HTML at build time and ships &lt;strong&gt;zero JavaScript by default&lt;/strong&gt;. The interactive bits — the &lt;a href="https://tinkernotes.io/tools/shopify-vs-woocommerce-calculator/" rel="noopener noreferrer"&gt;3-year cost calculator&lt;/a&gt; and the &lt;a href="https://tinkernotes.io/tools/hosting-cost-calculator/" rel="noopener noreferrer"&gt;hosting cost calculator&lt;/a&gt; — are Svelte "islands": JS loads &lt;em&gt;only&lt;/em&gt; for that component, &lt;em&gt;only&lt;/em&gt; on the pages that use it. The article you're reading ships no framework JavaScript at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://pages.cloudflare.com/" rel="noopener noreferrer"&gt;Cloudflare Pages&lt;/a&gt;&lt;/strong&gt; hosts it. I push to &lt;code&gt;main&lt;/code&gt; on GitHub, Cloudflare builds the site and serves the static output from its edge network. There's no origin server to keep patched, because there's no origin server. The free tier covers unlimited bandwidth and 500 builds a month — comfortably more than a one-person site needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git is the CMS.&lt;/strong&gt; Content lives in the repo as &lt;code&gt;.mdx&lt;/code&gt; files. Every edit is a commit; every commit is a diff, a history, and a one-line rollback. I get drafts via branches and review via pull requests — the workflow I already use for code, now also for prose.&lt;/p&gt;

&lt;p&gt;For a developer this is a feature, not a compromise. For a non-technical client it would be a non-starter, and that distinction matters — I'll come back to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I gave up coming from WordPress
&lt;/h2&gt;

&lt;p&gt;I want to be honest about the trade, because "just use a static site" advice usually isn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I gained&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No server to patch, no PHP version to chase, no database to back up&lt;/li&gt;
&lt;li&gt;Hosting cost is £0/month on Cloudflare Pages — and stays £0 under traffic spikes&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;/wp-admin&lt;/code&gt; to be brute-forced; the attack surface is basically static files&lt;/li&gt;
&lt;li&gt;Pages render as pre-built HTML — fast without a caching plugin bolted on&lt;/li&gt;
&lt;li&gt;Content is versioned in Git: real diffs, real history, instant rollback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it cost me&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No dashboard — publishing means a commit and a build, not a "Publish" button&lt;/li&gt;
&lt;li&gt;No mobile editing, no "fix a typo from my phone in the pub" moment&lt;/li&gt;
&lt;li&gt;A content rebuild runs on every change; fine at this size, slower at thousands of pages&lt;/li&gt;
&lt;li&gt;The plugin ecosystem is gone — anything WP gives you free, you wire up yourself&lt;/li&gt;
&lt;li&gt;It is a developer workflow: hand this stack to a non-dev client and it falls over&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last one is the real boundary. WordPress's enduring genius is that it hands a non-technical person a usable website &lt;em&gt;and&lt;/em&gt; the means to run it. The day-to-day editor isn't meant to touch code. Astro-on-Git assumes the editor &lt;em&gt;is&lt;/em&gt; the developer. For Tinkernotes — a personal site I both build and write — that assumption holds perfectly. For most of my agency clients it would be indefensible.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed once it was live
&lt;/h2&gt;

&lt;p&gt;Three things, concretely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance came for free.&lt;/strong&gt; No caching plugin, no CDN to configure, no image optimisation stack to tune. The pages are already static HTML with hashed assets, served from the edge. I set a Lighthouse budget of 95+ and hitting it has mostly been about not &lt;em&gt;breaking&lt;/em&gt; it, rather than chasing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The security worry just... left.&lt;/strong&gt; There's no admin login to harden, no plugin CVE feed to watch, no "is this theme still maintained" question. A static file can't run a SQL injection. That's not nothing — a meaningful share of agency emergency work is cleaning up compromised WordPress installs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost went to zero and stayed there.&lt;/strong&gt; No managed WordPress host, no renewal-rate surprise twelve months in. If a post ever does numbers, Cloudflare's edge absorbs it on the same free tier — a static file under load is still just a static file. (Renewal-rate games are exactly the trap I dig into in the &lt;a href="https://tinkernotes.io/reviews/kinsta-uk-review/" rel="noopener noreferrer"&gt;Kinsta UK review&lt;/a&gt; and &lt;a href="https://tinkernotes.io/reviews/hostinger-uk-review/" rel="noopener noreferrer"&gt;Hostinger UK review&lt;/a&gt; — worth a read if you &lt;em&gt;are&lt;/em&gt; hosting WordPress.)&lt;/p&gt;

&lt;h2&gt;
  
  
  When I'd still reach for WordPress — and I would
&lt;/h2&gt;

&lt;p&gt;This isn't a conversion story. WordPress is still the right call when the site needs the things WordPress is &lt;em&gt;for&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;non-technical person&lt;/strong&gt; has to publish and manage content independently.&lt;/li&gt;
&lt;li&gt;The site is genuinely &lt;strong&gt;dynamic&lt;/strong&gt; — accounts, comments, gated content, member areas.&lt;/li&gt;
&lt;li&gt;It's a &lt;strong&gt;shop&lt;/strong&gt;. WooCommerce on WordPress is still where I'd start most UK ecommerce builds — the whole &lt;a href="https://tinkernotes.io/blog/shopify-vs-woocommerce-uk-2026/" rel="noopener noreferrer"&gt;Shopify vs WooCommerce comparison&lt;/a&gt; exists because that decision is rarely obvious.&lt;/li&gt;
&lt;li&gt;You need to &lt;strong&gt;move fast&lt;/strong&gt; with a known team and a deep plugin ecosystem behind you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The mistake isn't choosing WordPress. The mistake is choosing it &lt;em&gt;by reflex&lt;/em&gt; — defaulting to a dynamic CMS for a job that's pure content, then spending the project budget caching and securing your way back to the static site you could have built directly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The takeaway&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Match the tool to the workload, not to your CV. Tinkernotes is content and calculators with one developer-author, so it's static HTML on the edge. Your next build might point straight back at WordPress — and that's fine, as long as you actually looked.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you want the longer version of who's writing this and why, the &lt;a href="https://tinkernotes.io/about/" rel="noopener noreferrer"&gt;about page&lt;/a&gt; covers it. The short version: I still write WordPress for a living. I just stopped assuming it was the answer before I'd heard the question.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More from Tinkernotes:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tinkernotes.io/blog/shopify-vs-woocommerce-uk-2026/" rel="noopener noreferrer"&gt;Shopify vs WooCommerce UK: The Real 3-Year Cost (2026)&lt;/a&gt; — five UK merchant scenarios costed end-to-end in GBP, with the calculator.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tinkernotes.io/guides/shopify-or-woocommerce-decision-framework/" rel="noopener noreferrer"&gt;Shopify or WooCommerce: A UK Decision Framework&lt;/a&gt; — six dimensions to weigh before you commit a build to either platform.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tinkernotes.io/reviews/kinsta-uk-review/" rel="noopener noreferrer"&gt;Kinsta UK Review&lt;/a&gt; — managed WordPress hosting priced honestly in GBP, renewal rates included.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>astro</category>
      <category>wordpress</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
