Database
Supabase
Supabase gives Next.js server components a real Postgres to query directly, which matters here because Stripe makes your own database the source of truth for entitlements. Subscription status, price IDs and current period end land in ordinary columns you can join against user rows and filter with row level security. Postgres constraints keep the webhook writes honest, and the same schema is queryable from a route handler, a cron job or the SQL editor when a customer disputes a charge.