Skip to content
Back to blog

Why we left WordPress for a static site on Cloudflare

A small studio site does not need a CMS, a theme, a builder, or a plugin marketplace. It needs words on a page and a contact form that works.

Thomas Kucharski · · 6 min read
  • meta
  • engineering
A blank page on a wooden desk

For five years our site lived on WordPress. It served us well at first. Then we noticed something: every two weeks, somebody on the team was logging in to update a plugin, dismiss a security banner, or untangle a layout that a builder had quietly broken.

A small studio site does not need a CMS, a theme, a builder, or a plugin marketplace. It needs words on a page and a contact form that works.

What we replaced

The WordPress install we retired was modest: a homepage with a long FAQ, an about page, a contact page that pointed at Cal.com, and the bones of a blog that we never used. Maybe forty pageviews a day, mostly from people who already knew us.

Behind that simple front were the usual suspects: a page builder, a security plugin, a caching plugin, an SEO plugin, an analytics plugin, a backup plugin. Each of them with its own admin tab, each of them quietly making API calls to somebody else’s server, each of them due for an update sooner or later.

What we built instead

The new site is one folder of Astro files. Pages are written in Astro components or MDX. The contact form is a 90-line endpoint that calls Resend. The whole thing builds to about 40 KB of HTML and CSS per page and a tiny amount of JavaScript.

It is hosted on Cloudflare Pages, with images on R2 behind a custom domain. The contact form runs as a Cloudflare Function, gated by Turnstile.

The math:

  • Zero plugins to update.
  • Zero database to back up.
  • Zero monthly hosting fee (Cloudflare’s free tier is generous).
  • Total moving parts: one git repo and one DNS zone.

What we gave up

A few real things, to be honest.

Web-based editing. You write a blog post by adding an MDX file to the repo. That is fine for us — we already live in VS Code — but it is a real downgrade for anyone who wants to write in a browser. If we hit a wall on that, we will bolt on a headless CMS later.

Drag-and-drop layout. Every change is a code change. We see this as a feature, not a regression.

A familiar admin surface. WordPress admins are everywhere; new joiners know it. The new site does not have an admin at all. New joiners need to know git.

What it took

Maybe a long weekend, including writing this post. The bulk of the time was deciding what to keep from the old site (the FAQ, the services framing) and what to drop (the four languages of legal text, the AI Business Plan Generator that nobody used).

If you are running a small business on WordPress and find yourself dreading every update, give the static-site path another look. The tooling is genuinely good now, and the maintenance tax goes to zero.

Ready to put your software to work?

Thirty minutes is enough to see where Stellar AI fits in your stack and how fast it pays back.