Initial commit: app Fideliter client (Flutter)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-17 21:32:39 +02:00
commit 01a0f1029f
49 changed files with 2613 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
# 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
```