1d3ee69c6d
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>
78 lines
2.8 KiB
Markdown
78 lines
2.8 KiB
Markdown
# Configuration Supabase (à faire une seule fois)
|
|
|
|
Le backend est partagé par les **deux apps** : `app_fideliter` (tablette / staff)
|
|
et `app_fideliter_client` (client). Suivez ces étapes dans l'ordre.
|
|
|
|
## 1. Créer le projet Supabase
|
|
|
|
1. Aller sur https://supabase.com → **New project** (gratuit).
|
|
2. Choisir un nom, un mot de passe de base de données, une région proche
|
|
(ex : `Europe (Paris)`), puis **Create**.
|
|
|
|
## 2. Créer les tables
|
|
|
|
1. Dans le projet : menu **SQL Editor** → **New query**.
|
|
2. Copier-coller **tout** le contenu de [`schema.sql`](schema.sql) → **Run**.
|
|
3. Vérifier dans **Table Editor** que `clients`, `mouvements`, `recompenses`,
|
|
`reglages`, `staff` existent.
|
|
|
|
## 3. Récupérer les 2 clés à mettre dans les apps
|
|
|
|
Menu **Project Settings** → **API** :
|
|
|
|
- **Project URL** (ex : `https://abcd1234.supabase.co`)
|
|
- **anon public** key (une longue chaîne — c'est la clé *publique*, sans danger
|
|
dans une app ; la sécurité est assurée par la RLS du `schema.sql`).
|
|
|
|
Coller ces 2 valeurs dans **chaque** app, fichier `lib/supabase_config.dart` :
|
|
|
|
```dart
|
|
class SupabaseConfig {
|
|
static const String url = 'https://VOTRE-PROJET.supabase.co';
|
|
static const String anonKey = 'VOTRE_CLE_ANON';
|
|
}
|
|
```
|
|
|
|
> ⚠️ Ne jamais mettre la clé **service_role** dans une app : elle contourne
|
|
> toute la sécurité. Seule la clé **anon** va dans les apps.
|
|
|
|
## 4. Créer le compte du magasin (staff)
|
|
|
|
Le staff (la tablette) a besoin d'un compte avec droits d'écriture.
|
|
|
|
1. Menu **Authentication** → **Users** → **Add user** → **Create new user**.
|
|
Mettre un email + mot de passe (ce sera l'identifiant de la tablette).
|
|
Cocher « Auto Confirm User ».
|
|
2. Copier l'**UID** de cet utilisateur (colonne `UID`).
|
|
3. Menu **SQL Editor**, exécuter (en remplaçant l'UID) :
|
|
|
|
```sql
|
|
insert into public.staff (user_id) values ('COLLER_UID_ICI');
|
|
```
|
|
|
|
Ce compte peut maintenant se connecter sur l'app **tablette** et tout gérer.
|
|
Les **clients**, eux, créent leur compte tout seuls depuis l'app client (ils ne
|
|
sont pas staff → ils ne peuvent que consulter leurs propres points).
|
|
|
|
## 5. (Recommandé pour tester vite) désactiver la confirmation d'email
|
|
|
|
Pour que la création de compte client marche sans étape email pendant les tests :
|
|
**Authentication** → **Providers** → **Email** → désactiver
|
|
« Confirm email » (à réactiver plus tard en production si souhaité).
|
|
|
|
## 6. Lancer
|
|
|
|
```bash
|
|
# App tablette (magasin)
|
|
cd app_fideliter && flutter run
|
|
|
|
# App client
|
|
cd app_fideliter_client && flutter run
|
|
```
|
|
|
|
- Sur la **tablette** : se connecter avec le compte staff de l'étape 4.
|
|
- Sur l'**app client** : « Créer un compte » → un client + son QR sont générés.
|
|
- Scanner ce QR depuis la tablette → sa fiche s'ouvre, on ajoute une facture,
|
|
ses points se mettent à jour dans l'app client (au rafraîchissement / retour
|
|
dans l'app). 🎉
|