What my stack actually costs
Cut Vercel Pro. Keep Cloudflare Workers and eat the DX downgrade.
Seven side projects, one credit card, twelve months of invoices. I added up every line item my stack actually charged me and ruled on each one.
The headline number: I was paying 47 dollars a month for infrastructure that serves fewer than nine thousand requests on a busy day. Most of that spend bought convenience I stopped noticing the week after I signed up.
| Service | USD / mo | USD / yr | Call |
|---|---|---|---|
| Vercel Pro | 20 | 240 | DROP |
| Cloudflare Workers Paid | 5 | 60 | KEEP |
| Managed Postgres | 15 | 180 | DROP |
| Object storage | 2 | 24 | KEEP |
| Transactional email | 5 | 60 | KEEP |
| Total | 47 | 564 |
Where the money went
Vercel Pro was the expensive one, and the audit was unkind to it. Every project on the plan is a static site or an edge function that Cloudflare runs for a fifth of the price. The preview deployments were genuinely great, but I shipped forty-one previews last year, which works out to roughly six dollars per preview. Nobody reviews my previews. I review my previews, on my own laptop, where npm run dev already works.
The managed Postgres instance was worse. It hosted one table for one project, and that table had 312 rows. A SELECT count(*) against it cost more per month than the domain name. The whole thing now lives in a markdown file in the repo, which is where 312 rows of mostly-static data always belonged.
The migration, itemized
Moving off took one evening per project. The recipe was the same every time:
npx wrangler login
npx wrangler deploy # assets-only worker, no adapter
npx wrangler deploy --dry-run # 0 warnings or it does not ship
- Export the static build and point a Worker at the output directory.
- Move the DNS to the same Cloudflare zone so the domain attaches in one line of config.
- Delete the old project the same day, before nostalgia sets in.
The bill you tolerate is the bill you deserve. Nobody re-audits a subscription that renews quietly.
Two things survived the purge, and they earned it:
- Workers Paid, because five dollars covers every project I own at once.
- Transactional email, because deliverability is the one thing I refuse to self-host.
The ruling stands: convenience is worth paying for exactly once, and never per project.