01a0f1029f
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# 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
|
|
```
|