Cloudflare stack 101
Cloudflare is not just a CDN. Here’s the full stack I use to run my app for nearly nothing.
Pages — deploy in 30 seconds
Cloudflare Pages is my default for any frontend. Connect a GitHub repo, set build commands, done. It deploys globally across Cloudflare’s edge network automatically.
Free tier is generous. Preview deployments on every PR. Custom domains with SSL in one click. I use it for adijha.com and MagicSell’s marketing site.
Workers — serverless at the edge
Workers run JavaScript (or TypeScript, Rust, Python) at the edge — not in a single region, but close to wherever the request comes from. Cold start time is near zero because Workers use V8 isolates instead of containers.
I use Workers for API routes, webhooks, and anything that needs to be fast globally. The free tier is 100,000 requests per day. For MagicSell, my webhook processing runs here.
R2 — S3 but better for most founders
R2 is object storage with zero egress fees. That’s the headline. With S3, you pay to put data in and pay again every time you read it out. With R2, reads are free.
For storing user-uploaded assets, generated files, or anything you need to serve publicly — R2 with a Worker or public bucket is the move.
D1 — SQLite at the edge
D1 is Cloudflare’s serverless SQL database. It’s SQLite under the hood, so the API is familiar. You run it from Workers without managing a database server.
I use it for lightweight data that doesn’t need a heavy Postgres setup. Config storage, flags, low-write tables. For MagicSell’s heavy transactional work I still use a proper database — but D1 handles a lot of the auxiliary stuff.
KV, Queues, Email Routing
KV is a key-value store for fast reads globally. Good for session data, feature flags, rate limiting state.
Queues lets you send messages between Workers asynchronously. I use this for background jobs — processing a webhook, sending an email — so the main request returns fast.
Email Routing forwards email from a custom domain to any inbox for free. That’s how [email protected] routes to my Gmail.
My actual MagicSell setup
- Frontend: Cloudflare Pages
- API: Workers (TypeScript)
- Storage: R2 for assets, D1 for auxiliary data
- Background jobs: Queues
- Cost: under $10/month for my current volume
The whole thing is serverless. No EC2, no RDS, no load balancer to manage. For a solo founder building MagicSell, this matters.
The takeaway
Cloudflare’s developer platform is underrated. Pages + Workers + R2 alone covers most solo founder use cases at near-zero cost. Learn it before reaching for AWS.
Building something? Follow me on Instagram and Twitter — I document everything.