Mathew 1d3ee69c6d Initial commit — app fidélité magasin (tablette)
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>
2026-07-17 21:37:06 +02:00

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)

  1. 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é).
  2. Temps réel : abonnement Supabase Realtime pour mettre à jour les soldes sans rafraîchir.
  3. Impression du QR (carte physique), statistiques, bonus de bienvenue / paliers.
S
Description
No description provided
Readme 220 KiB
Languages
Dart 91.2%
PLpgSQL 8.7%
Kotlin 0.1%