Database
Supabase
Postgres here stores the content a subscription unlocks, plus a mirror of the entitlement state RevenueCat reports. Keep that mirror in a table only an edge function may write, updated from RevenueCat webhooks, and have row level security policies join against it when serving premium rows. Supabase Storage is worth using for gated media in the same project, with signed URLs issued only after the same entitlement check has passed.