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"