Supabase PostgreSQL — 21 tables in the public schema
| # | Table | Purpose | Access |
|---|---|---|---|
| 1 | user_profile | User accounts, devices, referral codes | Open |
| 2 | subscriptions | Billing plans (free/premium) | Own rows |
| 3 | subscription_events | Subscription audit log | Server |
| 4 | courses | Master course catalog | Auth read |
| 5 | course_purchases | Course purchases per user | Own rows |
| 6 | custom_courses | AI-generated courses | Server |
| 7 | custom_course_purchases | Custom course purchases | Own rows |
| 8 | master_manifests | JSON content (shop, ads, etc.) | Server |
| 9 | manifest_cohorts | Manifest-to-cohort links | Server |
| 10 | ai_usage | AI credit balances | Own rows |
| 11 | ai_credit_purchases | AI credit receipts | Own rows |
| 12 | analytics | Course usage settings | Server |
| 13 | audio_usage | Play count tracking | Server |
| 14 | app_logs | Client logs and reports | Open |
| 15 | server_logs | Edge function logs | Server |
| 16 | cohorts | User group definitions | Server |
| 17 | user_cohorts | User group assignments | Server |
| 18 | discount_codes | Promo/discount codes | Server |
| 19 | user_discounts | User discount assignments | Server |
| 20 | referral_credits | Referral reward credits | Server |
| 21 | cached_handshake_responses | Cached sync responses | Server |
| Access Level | Tables | Count |
|---|---|---|
| Open (anon + auth) | user_profile, app_logs | 2 |
| All authenticated | courses | 1 |
| Own rows only | subscriptions, course_purchases, custom_course_purchases, ai_usage, ai_credit_purchases | 5 |
| Server only | All remaining 13 tables | 13 |