PLB / Dossier Technique / Système d'Abonnements

💳 Système d'Abonnements

Architecture complète : plans, droits par feature, intégration Stripe, tables Supabase et code Flutter.

📱 FlutterFlow 🗄️ Supabase 💳 Stripe 4 Plans 11 Features 5 Tables 2 Edge Functions
4
Plans
Gratuit · Joueur+ · Capitaine · Pro
11
Feature Keys
Droits contrôlés
5
Tables Supabase
Schéma abonnements
2
Edge Functions
checkout · cancel
2
Types d'accès
flag · limit
5
Pages Flutter
subscriptions · stripe · success · cancel · debug
🗺️
Architecture générale
Le système d'abonnements repose sur 4 couches : (1) les plans stockés en DB (table subscription), (2) une matrice de droits par feature et par plan (subscription_access), (3) un cache JSON par utilisateur (user_feature_usage_json_cache), et (4) une fonction Dart checkFeatureAccess() qui lit ce cache pour autoriser ou bloquer chaque action.
ComposantRôleTechnologie
Plans & tarifsDéfinition des offres, prix, couleurs, icônes, priceId Stripetable subscription
Matrice d'accèsRègles : quelle feature est accessible à quel statut, avec quelle limitetable subscription_access
Features par planLabels affichés sur les cartes (UI liste de features)table subscription_features
Suivi utilisationComptage des usages par user et par feature (période glissante)table user_feature_usage
Cache droitsSnapshot JSON des droits actuels de chaque utilisateur (évite N requêtes)table user_feature_usage_json_cache
PaiementCréation session Stripe → redirection navigateur → webhook → mise à jour UserEdge Function + Stripe
Vérification runtimeLit FFAppState().userFeatureRights → checkFeatureAccess(featureKey)custom_functions.dart