At the end of my last piece on HTML vs Markdown, I dropped a teaser: there’s a way to go from an idea on your phone to a polished, live website in minutes, for essentially zero cost. People wrote in. Here’s the stack.
I use it for everything — landing pages, side projects, the site you’re reading right now. Four moving parts, three of them free, one optional cost (a domain). The setup takes a single afternoon. After that, every new site is a 20-minute exercise.
The four pieces
An AI agent that writes the code. It doesn’t matter which one. Claude, ChatGPT, Gemini, Codex, Cursor — they’re all good enough now to scaffold a clean static site from a paragraph of intent. I happen to use Claude Code because it works directly in my terminal and edits files in place, but the pipeline doesn’t care. Pick whichever you already pay for, or use the free tier of any of them.
A GitHub repository. This is where the code lives. GitHub gives you unlimited free private repos with a generous CI/CD budget that you probably won’t even touch for a static site. Two minutes to create. No credit card required.
Cloudflare Pages. This is the magic step. You connect Cloudflare Pages to your GitHub repo, and every time you push a commit, Cloudflare builds and deploys the site to its global edge network — usually in 30 to 60 seconds. The free plan gives you 500 builds per month, unlimited bandwidth, unlimited requests, custom domains with automatic SSL, and preview deployments on every branch. There is no asterisk. It’s the most generous free tier in the industry by an order of magnitude.
A static site framework. Astro, Next.js, SvelteKit, Eleventy, even raw HTML — anything that produces static files works. I default to Astro because it’s fast, has zero JavaScript on the page by default, and the AI agents understand it well. But the framework is fungible. The pipeline doesn’t care.
That’s the whole stack.
Idea to live URL,
in roughly twenty minutes.
- 01 AI agent Writes the files from a paragraph of intent$0
- 02 GitHub Stores the source, tracks every change$0
- 03 Cloudflare Pages Builds on push, deploys to the global edge$0
- The live surfaceProduction URLServed from Cloudflare's edge — fast everywhere, SSL handled, custom domain optional.
The bottleneck stopped being technical. It's now just deciding what you want to put online.
The flow, step by step
-
You describe what you want. A landing page for a workshop. A portfolio. A blog. A pricing page. Whatever. You tell the AI agent in plain English — “Build me a single-page site for a half-day AI workshop, with hero, three benefits, and a contact form.” That’s the prompt.
-
The AI writes the code. Files appear in a folder. HTML, CSS, components, a config file. If you’re using something like Claude Code or Cursor, it edits the files in your project directly. If you’re using a chat interface, you copy-paste.
-
You push to GitHub. One command if you’re already set up:
git push. The first time, you create a new repo and connect it; from then on, it’s a one-liner. -
Cloudflare Pages picks it up. Within seconds of your push, Cloudflare detects the new commit, runs your build command (
npm run buildfor most frameworks), and publishes the result. You get a live URL likeyour-project.pages.devimmediately. If you’ve connected a custom domain, it’s there too, with SSL already in place. -
You iterate. Want to change a headline? Tell the AI. New commit, new deploy, 30 seconds later it’s live. There is no “deploy day.” There is no staging dance. You just edit, push, and the site updates.
For the rest of us: what’s actually happening here
If you’ve never deployed a website before, this might sound like magic. It mostly is. Here’s the mental model:
- A website is just a folder of files — text, images, instructions for a browser.
- GitHub is a synced cloud folder for those files, with a full history of every change.
- Cloudflare Pages is a robot that watches that folder. Whenever the files change, the robot picks them up, places copies on hundreds of servers around the world, and tells the internet “this is the new version.” Visitors get served from whichever server is closest to them, so the site is fast everywhere.
- The AI agent is the part that writes the files for you. You describe what you want; it produces the folder.
The reason this stack works now — and didn’t five years ago — is that two things became true simultaneously. AI agents got good enough to produce working code from plain-language descriptions. And edge platforms like Cloudflare Pages made global deployment effectively free. Either alone is interesting; together, they collapse the entire “how do I get a website online” problem into a 20-minute afternoon.
What it actually costs
| Component | Cost |
|---|---|
| AI agent (free tier of Claude, ChatGPT, Gemini, or Codex) | $0 |
| GitHub (unlimited free private repos) | $0 |
| Cloudflare Pages (500 builds/mo, unlimited bandwidth, SSL, custom domain) | $0 |
| Static site framework (Astro, Next.js, etc.) | $0 |
Domain name (optional — Cloudflare gives you a .pages.dev URL free) | ~$10/year |
| Total | $0 — $10/year |
If you want a better AI agent — Claude Pro, ChatGPT Plus, Cursor Pro — that’s another $20/month, and it’s worth it if you ship more than one project a month. But the pipeline itself is genuinely free.
For reference: traditional web hosting that does a fraction of what Cloudflare Pages does (no global CDN, no automatic SSL, no preview deployments, no Git integration) usually runs $5-15/month. Managed platforms like Vercel or Netlify offer comparable free tiers but with stricter bandwidth limits — fine for hobby projects, but Cloudflare’s “unlimited bandwidth” is what lets this scale to anything.
The honest tradeoffs
This stack is not for everyone. A few real limitations:
It’s static-first. If you need a database, user accounts, server-side processing, or a backend API, you’ll need to add something — Cloudflare Workers, Supabase, or a separate service. Cloudflare’s free tier covers the basics of all three, but the complexity goes up. For a content site, marketing page, or portfolio, you’ll never hit the wall.
You need to know your way around a terminal — a little. git push. npm run build. Basic stuff. If you’ve never opened a terminal, the first hour is the hardest. After that, it’s muscle memory. The AI can guide you through it.
500 builds a month is a soft ceiling. It sounds like a lot until you realize that every time you push, that’s a build. If you commit 20 times a day for a month, you hit it. The fix is either to upgrade ($5/month for unlimited) or to batch commits. Most people don’t get close.
You’re betting on Cloudflare’s free tier sticking around. It might not, forever. But Cloudflare has been consistently generous for over a decade, and even if the free tier shrinks tomorrow, your code is in GitHub. You’re never locked in.
Why I write about this
Because the question “how do I just get a website online?” used to have a 500-step answer that involved a credit card, a server, an SSH key, and a weekend. Now it has a 20-minute answer that involves nothing but a willingness to describe what you want.
That changes who can ship things. A friend asked me last month how to put up a one-pager for an event. I walked them through this pipeline in a single coffee. They left with a live URL, a custom domain, and the understanding that they could do it again tomorrow without me. That’s the whole point. The tools are good enough that the bottleneck isn’t technical anymore — it’s deciding what you want to put online.
If you’ve been thinking about a project, a portfolio, a small product page, a writing site — there’s no friction left between you and shipping it. The whole stack is sitting there, waiting.
References
- Cloudflare Pages — Free plan details and build limits
- GitHub — Free plan for individuals
- Astro — astro.build
- Claude Code — claude.com/claude-code
- A previous piece on the format side of this stack: HTML vs Markdown