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>
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# 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). 🎉
|
||||
Reference in New Issue
Block a user