Managed-Hosting CMS Model — Agency Keeps the Infra (Cloudflare + Supabase)

Author: hermes • Date: 2026-07-15 • Tier: T-deep (decision-grade; every load-bearing claim verified against a primary source) This is ARM 2 of the CMS research arc. Arm 1 = build-and-handover on Vercel (research/cms-basketball-vercel-handover-2026-07-15/REPORT.md, verdict Payload v3). Sources: sources/T1-cms-cloudflare-supabase.md · sources/T2-auth-model.md · sources/T3-multitenancy-cloudflare-hosting.md · sources/T4-business-model-economics.md Model in scope: agency keeps the site permanently on its OWN Cloudflare + Supabase infra; client gets only login credentials; agency runs upkeep for a yearly fee.


TL;DR


The core decision: two native axes (surface the tension, don't hide it)

Directus Payload v3
Supabase-Postgres fit ✅✅ database-first — introspects your existing Supabase tables (official partner integration; stays in public schema, can't touch auth/storage) ✅ connects via Hyperdrive, but OWNS/migrates its own schema (drops-recreates by default — it's the app's DB, not a skin over existing tables)
Cloudflare compute needs a VM (Fly/Railway) fronted by CF DNS/CDN/Access/R2 — Containers billing favors sleep-capable, unproven always-on for Directus ✅✅ official GA Cloudflare Workers deploy — no extra host
Editor UX for non-tech client ✅✅ turnkey Data Studio + no-code granular roles ✅ good, but roles = custom role field + access fns (dev setup)
Moving parts per site (managed fleet) Supabase + VM + Cloudflare(CDN/R2) = 3 hosts Cloudflare Worker + Supabase + R2 = 2 hosts, 1 compute
Strategic lock-in managed-only (can't hand over cleanly) handover OR managed (both arms)

Deciding question for you: does "our stack" mean "minimize infra + keep both business models open" (→ Payload) or "Supabase Postgres is the canonical data layer and the CMS is a thin admin over it, VM is fine" (→ Directus)? For a managed fleet you want cheap + low-ops, Payload's single-compute model wins total cost of ownership.


Auth: the simplest correct answer (T2)

The operator's phrase — "client just gets login codes, as they would from any other service" — is satisfied by the CMS's own auth. All three CMSs ship their own user store + scoped roles; you invite the coach/admins/players and hand them credentials. Done.


Hosting + multi-tenancy for the managed fleet (T3)

Agency infra cost (what YOU pay to run the fleet)

Sites Model (Payload/CF-Workers) Model (Directus/VM)
Base ~$25/mo Supabase Pro (org-wide) ~$25/mo Supabase Pro
+1 site ~$5–12/mo marginal (Worker + DB compute + R2) ~$12/mo marginal (VM + DB + R2)
10 sites ~$85–145/mo ~$145/mo
20 sites ~$150–265/mo ~$265/mo

(Ranges from T3; Payload-on-Workers trims the per-site VM. Supabase Pro is org-level; free-tier projects pause on inactivity — not viable for live client sites, so Pro is the floor.)


Business model: managed vs handover (T4)

Model A — Handover (arm 1) Model B — Managed (this arm)
Revenue one-time build fee build fee + recurring yearly upkeep
Agency ongoing cost ~$0 ~$12/mo per site infra + support labor
Recurring revenue none yes → 1.5–4× valuation premium (cited M&A data)
Liability transfers to client agency owns uptime + patching + SLA
Lock-in risk none "held hostage" unless exit clause written
Client control full login only

Recommendation

  1. CMS: Payload v3 for the managed model — it's the only option that keeps you purely on Cloudflare Workers + Supabase + R2 (no per-site VM), and it keeps the handover model open too (one CMS, both products). Directus is the strong alternative if turnkey editor UX + Supabase-as-canonical-data-layer outweigh running a VM per site.
  2. Auth: CMS-native logins for the client. No Supabase Auth for editors. Keep Supabase for Postgres + Storage.
  3. Infra: one Supabase project + one Payload Worker + R2 per client, Cloudflare in front, Cloudflare Access gating admin.
  4. Business: lead with managed, price $600–1,200/yr, mandatory data-export clause, offer handover as a higher one-time tier.

Confidence + flagged gaps


§Cross-arm summary (both reports)

Arm 1 — Handover (Vercel) Arm 2 — Managed (Cloudflare)
Winner Payload v3 Payload v3
Why only Vercel-native CMS, clean handover only Cloudflare-compute-native CMS, fewest moving parts
Alt Directus (best Supabase-data fit + editor UX, costs a VM)
Strategic takeaway Payload is robust across BOTH business models — choosing it does not lock the agency into either. That is the single most valuable finding of the whole arc.