Who Covers What?

An app is a set of capabilities — not a brand. Each provider covers some of them. Read down a column to see how much one provider does; read across a row to see who can do that job. Nobody is forced to pick just one.

Capability VPSVultr · DO · EC2 Vercelfrontend host CloudflareWorkers platform Supabasebackend-as-a-service
Frontendthe UI DIYyou host it ✓ coreits whole job ✓ Pages —
Compute / APIrun your code ✓any language ✓ fnsserverless ✓ Workers ~ edge fns
Databasestore records DIYyou install PG/MySQL — ✓ D1SQL, built in ✓ corePostgres
Storagefiles / images DIYdisk on the box — ✓ R2object store ✓ Storage
Authwho is this user DIY — ~ Access ✓ corebuilt in
✓ covered, managed for you DIY possible, but you build & run it — not this provider's job ~ = partial / with limits

VPS = one box, all DIY

  • A VPS can do every row — because it's a blank Linux box
  • But every ✓ becomes DIY: you install, secure, back up, scale it
  • Max control, max work. Great when you need your own DB or custom setup

Cloudflare = a full platform

  • Not "just edge functions" — Workers + D1 + R2 + KV
  • Covers frontend, compute, database, storage in one place
  • You can build a whole app on it with no separate database

They combine — pick per row

  • Vercel's column is short → pair it with a data provider
  • Vercel (frontend) + Cloudflare or Supabase (data) = a normal stack
  • The question isn't "which one" — it's "who covers each row"