One Subscription: Web + Mobile (Stripe + RevenueCat + Supabase)

Let a user subscribe on web (Stripe) OR mobile (RevenueCat), unlock both, and never get double-charged. The trap is reconciling two billing systems at runtime. This kit does the opposite: one Supabase column, profiles.subscription_tier, is the single source of truth. Both billing webhooks write it; every app just reads it. It is the architecture from a production web app plus Expo app sharing one subscription, generalised into a drop-in kit. What you get: The Supabase migration (subscription_tier + stripe_customer_id + RLS) A Stripe checkout function and the Stripe webhook that maps events to the tier A canonical RevenueCat webhook mapping mobile events to the same tier (the right server-side pattern, not a client hack) The one entitlement-check helper, identical on web and mobile A full README, including the one rule that makes it line up Stack: Supabase (Postgres, Edge Functions on Deno), Stripe, RevenueCat. Instant download, single-project commercial use.The full write-up behind this kit: One subscription across web and mobile.