# Configuration Supabase (à faire une seule fois) Le backend est partagé par les **deux apps** : `app_fideliter` (tablette / staff) et `app_fideliter_client` (client). Suivez ces étapes dans l'ordre. ## 1. Créer le projet Supabase 1. Aller sur https://supabase.com → **New project** (gratuit). 2. Choisir un nom, un mot de passe de base de données, une région proche (ex : `Europe (Paris)`), puis **Create**. ## 2. Créer les tables 1. Dans le projet : menu **SQL Editor** → **New query**. 2. Copier-coller **tout** le contenu de [`schema.sql`](schema.sql) → **Run**. 3. Vérifier dans **Table Editor** que `clients`, `mouvements`, `recompenses`, `reglages`, `staff` existent. ## 3. Récupérer les 2 clés à mettre dans les apps Menu **Project Settings** → **API** : - **Project URL** (ex : `https://abcd1234.supabase.co`) - **anon public** key (une longue chaîne — c'est la clé *publique*, sans danger dans une app ; la sécurité est assurée par la RLS du `schema.sql`). Coller ces 2 valeurs dans **chaque** app, fichier `lib/supabase_config.dart` : ```dart class SupabaseConfig { static const String url = 'https://VOTRE-PROJET.supabase.co'; static const String anonKey = 'VOTRE_CLE_ANON'; } ``` > ⚠️ Ne jamais mettre la clé **service_role** dans une app : elle contourne > toute la sécurité. Seule la clé **anon** va dans les apps. ## 4. Créer le compte du magasin (staff) Le staff (la tablette) a besoin d'un compte avec droits d'écriture. 1. Menu **Authentication** → **Users** → **Add user** → **Create new user**. Mettre un email + mot de passe (ce sera l'identifiant de la tablette). Cocher « Auto Confirm User ». 2. Copier l'**UID** de cet utilisateur (colonne `UID`). 3. Menu **SQL Editor**, exécuter (en remplaçant l'UID) : ```sql insert into public.staff (user_id) values ('COLLER_UID_ICI'); ``` Ce compte peut maintenant se connecter sur l'app **tablette** et tout gérer. Les **clients**, eux, créent leur compte tout seuls depuis l'app client (ils ne sont pas staff → ils ne peuvent que consulter leurs propres points). ## 5. (Recommandé pour tester vite) désactiver la confirmation d'email Pour que la création de compte client marche sans étape email pendant les tests : **Authentication** → **Providers** → **Email** → désactiver « Confirm email » (à réactiver plus tard en production si souhaité). ## 6. Lancer ```bash # App tablette (magasin) cd app_fideliter && flutter run # App client cd app_fideliter_client && flutter run ``` - Sur la **tablette** : se connecter avec le compte staff de l'étape 4. - Sur l'**app client** : « Créer un compte » → un client + son QR sont générés. - Scanner ce QR depuis la tablette → sa fiche s'ouvre, on ajoute une facture, ses points se mettent à jour dans l'app client (au rafraîchissement / retour dans l'app). 🎉