App Flutter de programme de fidélité : login staff, clients (nom/prénom), scan QR, factures (€→points), récompenses, réglages. Backend Supabase (schéma SQL + RLS anti-triche dans supabase/). Icône incluse. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fidélité — App magasin (tablette)
App Android (Flutter) de programme de fidélité pour un magasin, conçue pour une tablette en caisse. Chaque client a une carte de fidélité = un QR code : on le scanne, on ajoute ses factures, il cumule des points, qu'il peut échanger contre des récompenses.
Backend : Supabase (comptes + données partagées avec l'app client
app_fideliter_client). La tablette se connecte avec
un compte staff (personnel du magasin).
App sœur de gestion_prix_produit : même stack et même
design (Material 3, noir & blanc + accent vert émeraude pour la distinguer sur la
même tablette).
Fonctions
- Connexion staff : email + mot de passe (compte staff, voir SETUP).
- Clients : liste, recherche (nom / téléphone / code), création « au comptoir » (code unique + QR générés côté serveur).
- Scanner : scan du QR d'un client → ouverture directe de sa fiche. (Caméra de la tablette ; la scanette externe viendra ensuite.)
- Fiche client : solde de points, ajout d'une facture (montant € → points selon le ratio), utilisation d'une récompense (débit), historique, correction manuelle.
- Récompenses : catalogue (ex : « Café offert » = 10 pts), activer/désactiver.
- Réglages : ratio « euros pour 1 point », nom du magasin, déconnexion.
Calcul des points
points gagnés = montant de la facture ÷ (euros par point)
Points fractionnaires. Ex : avec 1 pt = 10 €, une facture de 12 € rapporte
1,2 pt. Le solde est recalculé côté base (trigger) à chaque mouvement, donc
fiable même si plusieurs appareils écrivent.
Configuration (à faire une fois)
Voir supabase/SETUP.md : créer le projet Supabase,
exécuter supabase/schema.sql, coller l'URL + la clé anon
dans lib/supabase_config.dart, créer le compte staff.
Techno
- Flutter (Material 3, thème noir & blanc + accent vert)
supabase_flutter(auth staff + base de données partagée)mobile_scanner(scan du QR),qr_flutter(affichage du QR d'un client)
Lancer l'app
flutter run
Structure
lib/
├── main.dart # init (locale fr, Supabase) + thème
├── config.dart # constantes par défaut
├── supabase_config.dart # URL + clé anon (À REMPLIR)
├── theme.dart
├── models/ # client, mouvement, recompense
├── services/
│ ├── reglages.dart # ratio €/point + nom magasin (Supabase)
│ ├── client_repository.dart # clients + factures + récompenses (Supabase)
│ └── recompense_repository.dart # catalogue (Supabase)
├── screens/
│ ├── auth_gate.dart # login staff ↔ app selon la session
│ ├── staff_login_screen.dart
│ ├── home_shell.dart # 4 onglets + navigation
│ ├── clients_screen.dart
│ ├── client_edit_screen.dart
│ ├── client_detail_screen.dart
│ ├── scan_screen.dart
│ ├── recompenses_screen.dart
│ └── reglages_screen.dart
├── widgets/ # pastille_points, qr_client
└── utils/format.dart
supabase/
├── schema.sql # tables + triggers + sécurité (RLS)
└── SETUP.md # guide de configuration
Prochaines étapes (roadmap)
- Scanette externe : le lecteur se comporte comme un clavier — un champ caché
reçoit le code et appelle
scan_screen.dart→_ouvrirParCode(déjà factorisé). - Temps réel : abonnement Supabase Realtime pour mettre à jour les soldes sans rafraîchir.
- Impression du QR (carte physique), statistiques, bonus de bienvenue / paliers.