You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
4.9 KiB
Markdown
136 lines
4.9 KiB
Markdown
|
2 months ago
|
# Configuration Supabase - BricoLoc Moderne
|
||
|
|
|
||
|
|
## 📊 Informations du Projet
|
||
|
|
|
||
|
|
- **Projet**: bricoloc-moderne
|
||
|
|
- **Project ID**: junliislndtujomtdxlb
|
||
|
|
- **Région**: eu-central-1 (Europe Centrale)
|
||
|
|
- **URL**: https://junliislndtujomtdxlb.supabase.co
|
||
|
|
- **Status**: ACTIVE_HEALTHY
|
||
|
|
- **Coût**: $0/mois (Free Tier)
|
||
|
|
|
||
|
|
## 🗄️ Schéma de Base de Données
|
||
|
|
|
||
|
|
### Tables Créées
|
||
|
|
|
||
|
|
1. **users** - Gestion des utilisateurs
|
||
|
|
- id, email, nom, prenom, telephone, is_admin
|
||
|
|
- Timestamps: created_at, updated_at
|
||
|
|
|
||
|
|
2. **categories** - Catégories d'outils
|
||
|
|
- 5 catégories par défaut insérées
|
||
|
|
- id, nom, description
|
||
|
|
|
||
|
|
3. **tools** - Catalogue des outils
|
||
|
|
- id, nom, description, category_id, prix_journalier, image_url, is_available
|
||
|
|
- Index full-text sur nom et description (français)
|
||
|
|
|
||
|
|
4. **inventory** - Gestion des stocks par entrepôt
|
||
|
|
- id, tool_id, entrepot, quantite_disponible, quantite_totale
|
||
|
|
- Contrainte: quantite_disponible <= quantite_totale
|
||
|
|
|
||
|
|
5. **reservations** - Système de réservation
|
||
|
|
- id, user_id, tool_id, date_debut, date_fin, quantite, prix_total, status, entrepot
|
||
|
|
- Status: pending, confirmed, in_progress, completed, cancelled
|
||
|
|
- Contrainte: date_fin >= date_debut
|
||
|
|
|
||
|
|
6. **payments** - Gestion des paiements
|
||
|
|
- id, reservation_id, montant, status, method, transaction_id
|
||
|
|
- Status: pending, completed, failed, refunded
|
||
|
|
- Methods: card, cash, bank_transfer
|
||
|
|
|
||
|
|
7. **notifications** - Système de notifications
|
||
|
|
- id, user_id, type, titre, message, is_read
|
||
|
|
- Types: reservation_confirmed, reservation_reminder, reservation_completed, payment_received, system_alert
|
||
|
|
|
||
|
|
### Triggers Automatiques
|
||
|
|
|
||
|
|
Toutes les tables (sauf notifications) ont un trigger `update_updated_at` qui met automatiquement à jour le champ `updated_at` lors de modifications.
|
||
|
|
|
||
|
|
## 🔒 Politiques RLS (Row Level Security)
|
||
|
|
|
||
|
|
RLS est **ACTIVÉ** sur toutes les tables. Voici les politiques par table :
|
||
|
|
|
||
|
|
### Users
|
||
|
|
|
||
|
|
- ✅ Les utilisateurs peuvent **voir** leur propre profil
|
||
|
|
- ✅ Les utilisateurs peuvent **modifier** leur propre profil
|
||
|
|
- ✅ Les **admins** peuvent voir tous les utilisateurs
|
||
|
|
|
||
|
|
### Categories
|
||
|
|
|
||
|
|
- ✅ **Tout le monde** (authenticated + anon) peut **lire** les catégories
|
||
|
|
- ✅ Seuls les **admins** peuvent créer/modifier/supprimer des catégories
|
||
|
|
|
||
|
|
### Tools
|
||
|
|
|
||
|
|
- ✅ **Tout le monde** peut voir les outils **disponibles** (is_available = true)
|
||
|
|
- ✅ Les utilisateurs **authentifiés** peuvent voir tous les outils
|
||
|
|
- ✅ Seuls les **admins** peuvent créer/modifier/supprimer des outils
|
||
|
|
|
||
|
|
### Inventory
|
||
|
|
|
||
|
|
- ✅ Les utilisateurs **authentifiés** peuvent consulter l'inventaire
|
||
|
|
- ✅ Seuls les **admins** peuvent gérer l'inventaire
|
||
|
|
|
||
|
|
### Reservations
|
||
|
|
|
||
|
|
- ✅ Les utilisateurs peuvent **voir** leurs propres réservations
|
||
|
|
- ✅ Les utilisateurs peuvent **créer** des réservations
|
||
|
|
- ✅ Les utilisateurs peuvent **modifier/annuler** leurs propres réservations
|
||
|
|
- ✅ Les **admins** peuvent voir et modifier toutes les réservations
|
||
|
|
|
||
|
|
### Payments
|
||
|
|
|
||
|
|
- ✅ Les utilisateurs peuvent voir les paiements de leurs réservations
|
||
|
|
- ✅ Les **admins** peuvent voir tous les paiements
|
||
|
|
- ✅ Seuls les **admins** peuvent créer/modifier des paiements
|
||
|
|
|
||
|
|
### Notifications
|
||
|
|
|
||
|
|
- ✅ Les utilisateurs peuvent **voir** leurs propres notifications
|
||
|
|
- ✅ Les utilisateurs peuvent **modifier** (marquer comme lu) leurs notifications
|
||
|
|
- ✅ Les utilisateurs peuvent **supprimer** leurs notifications
|
||
|
|
- ✅ Le **système** (service_role) peut créer des notifications pour tous
|
||
|
|
|
||
|
|
## 🔑 Variables d'Environnement
|
||
|
|
|
||
|
|
Les variables suivantes sont configurées dans `.env.local` :
|
||
|
|
|
||
|
|
```env
|
||
|
|
NEXT_PUBLIC_SUPABASE_URL=https://junliislndtujomtdxlb.supabase.co
|
||
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGci...
|
||
|
|
```
|
||
|
|
|
||
|
|
## 📝 Migrations Appliquées
|
||
|
|
|
||
|
|
1. ✅ `create_users_table` - Table users + trigger
|
||
|
|
2. ✅ `create_categories_table` - Table categories + données par défaut
|
||
|
|
3. ✅ `create_tools_table` - Table tools + index full-text
|
||
|
|
4. ✅ `create_inventory_table` - Table inventory + contraintes
|
||
|
|
5. ✅ `create_reservations_table` - Table reservations + enum status
|
||
|
|
6. ✅ `create_payments_table` - Table payments + enum status/method
|
||
|
|
7. ✅ `create_notifications_table` - Table notifications + enum type
|
||
|
|
8. ✅ `enable_rls_and_create_policies` - Activation RLS + politiques users/categories
|
||
|
|
9. ✅ `rls_policies_tools_and_inventory` - Politiques tools + inventory
|
||
|
|
10. ✅ `rls_policies_reservations_and_payments` - Politiques reservations + payments
|
||
|
|
11. ✅ `rls_policies_notifications` - Politiques notifications
|
||
|
|
|
||
|
|
## 🧪 Test de Connexion
|
||
|
|
|
||
|
|
Pour tester la connexion Supabase, accédez à :
|
||
|
|
- http://localhost:3000/test-supabase
|
||
|
|
|
||
|
|
## 📚 Prochaines Étapes
|
||
|
|
|
||
|
|
1. Implémenter les repositories Supabase pour chaque service
|
||
|
|
2. Créer les use cases pour l'authentification
|
||
|
|
3. Développer les API routes Next.js
|
||
|
|
4. Implémenter l'interface utilisateur
|
||
|
|
|
||
|
|
## 🔗 Liens Utiles
|
||
|
|
|
||
|
|
- Dashboard Supabase: https://supabase.com/dashboard/project/junliislndtujomtdxlb
|
||
|
|
- Documentation Supabase: https://supabase.com/docs
|
||
|
|
- Supabase JS Client: https://supabase.com/docs/reference/javascript
|