# Ma fidélité — App client App mobile (Flutter) pour les **clients** du programme de fidélité. Le client crée son compte lui-même, obtient sa **carte de fidélité (QR code)**, suit ses **points** et voit les **récompenses** qu'il peut obtenir. **Backend : Supabase** — le même projet que l'app magasin [`app_fideliter`](../app_fideliter). Les points ajoutés en caisse apparaissent côté client au rafraîchissement. ## Parcours 1. **Accueil** : choix « Créer un compte » ou « J'ai déjà un compte ». 2. **Création de compte** : email + mot de passe + nom (+ téléphone). Le code de fidélité et le QR sont générés **automatiquement** côté serveur — le gérant n'a rien à saisir. 3. **Accueil client** : carte avec le solde de points, le **QR code** à présenter en caisse, la progression vers chaque récompense, et l'historique. > Sécurité : un client ne peut voir que **ses** données et ne peut **pas** modifier > ses points (règles RLS + triggers Supabase, voir `schema.sql` de l'app magasin). ## Configuration Même projet Supabase que l'app magasin. Voir **[`../app_fideliter/supabase/SETUP.md`](../app_fideliter/supabase/SETUP.md)**. Coller l'URL + la clé anon dans [`lib/supabase_config.dart`](lib/supabase_config.dart) (les **mêmes** valeurs que l'app magasin). ## Techno - Flutter (Material 3, même thème que l'app magasin) - `supabase_flutter` (auth client + données), `qr_flutter` (affichage du QR) ## Lancer l'app ```bash flutter run ``` ## Structure ```text lib/ ├── main.dart # init (locale fr, Supabase) + thème ├── supabase_config.dart # URL + clé anon (À REMPLIR) ├── theme.dart ├── models/ # client, mouvement, recompense ├── services/ │ └── session_client.dart # données du client connecté (points, historique…) ├── screens/ │ ├── auth_gate.dart # accueil ↔ profil ↔ app selon la session │ ├── welcome_screen.dart # choix connexion / création de compte │ ├── login_screen.dart │ ├── signup_screen.dart │ ├── complete_profile_screen.dart # finalisation du profil (après confirmation email) │ └── home_client_screen.dart # carte de fidélité (points + QR), récompenses, historique └── utils/format.dart ```