Création du projet
Nouveau projet Supabase
1
Créer le projet
- Allez sur supabase.com
- Cliquez sur “New Project”
- Remplissez :
- Name: Kit’Asso Production
- Database Password: Générer un mot de passe fort
- Region: Europe (Frankfurt ou Paris)
- Pricing Plan: Free (ou Pro si besoin)
2
Attendre le provisioning
⏱️ Durée : 2-5 minutesSupabase crée :
- Base de données PostgreSQL
- API REST auto-générée
- Realtime subscriptions
- Storage buckets
- Auth service
3
Récupérer les credentials
Dans Project Settings → API :
- Project URL:
https://xxxxx.supabase.co - anon public key:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... - service_role key: ⚠️ À ne JAMAIS exposer côté client
Migrations de base de données
Option 1 : SQL Editor (recommandé pour démarrer)
1
Ouvrir SQL Editor
Dans le dashboard Supabase → SQL Editor
2
Exécuter les migrations
Les migrations sont dans Pour chaque fichier :
supabase/migrations/ (43 fichiers).Ordre chronologique strict :- Ouvrir le fichier local
- Copier le contenu
- Coller dans SQL Editor
- Cliquer sur “Run”
- Vérifier le succès (pas d’erreur rouge)
3
Vérifier les tables
Dans Table Editor, vous devez voir 13 tables :
- tools
- categories
- filters
- tool_features
- workflows
- workflow_steps
- tool_packs
- pack_tools
- quizzes
- quiz_questions
- quiz_answers
- quiz_recommendations
- quiz_responses
- site_assets
Option 2 : Supabase CLI
Si vous avez installé le CLI :- Toutes les migrations en une commande
- Historique des migrations trackées
- Rollback possible
Row Level Security (RLS)
Vérifier que RLS est activé
rowsecurity = true.
Policies par table
Les policies sont définies dans les migrations. Vérifiez : Exemple : tabletools
Storage Buckets
Créer les buckets
1
Aller dans Storage
Dashboard Supabase → Storage
2
Créer bucket tool_logos
- Name:
tool_logos - Public bucket: ✅ Yes
- File size limit: 2 MB
- Allowed MIME types:
image/*
3
Créer bucket site_assets
- Name:
site_assets - Public bucket: ✅ Yes
- File size limit: 5 MB
- Allowed MIME types:
image/*, video/*
Policies Storage
Authentication
Configurer Auth
1
Aller dans Authentication
Dashboard → Authentication → Settings
2
Désactiver les inscriptions publiques
Enable email signups: ❌ OffSeuls les admins créeront des comptes depuis le dashboard
3
Configurer Email Templates (optionnel)
Email Templates → Personnalisez :
- Confirmation Email
- Magic Link
- Reset Password
Créer un utilisateur admin
1
Aller dans Users
Authentication → Users → Add user
2
Créer le user
- Email:
[email protected] - Password: Générer un mot de passe fort
- Auto Confirm User: ✅ Yes
3
Tester la connexion
Sur votre app déployée :
- Allez sur
/admin - Redirigé vers
/login - Connectez-vous avec les credentials
- Devrait accéder au dashboard admin
Performance & Indexes
Vérifier les indexes
tools.category_idtools.pricing_tiertool_features.tool_idtool_features.filter_idworkflow_steps.workflow_idpack_tools.pack_id- etc.
Connection Pooling
Supabase gère automatiquement le pooling avec PgBouncer. Limites par plan :- Free: 60 connections
- Pro: 200 connections
- Enterprise: Custom
Monitoring
Database Health
Dashboard → Database → Health Surveillez :- CPU Usage: < 80%
- Memory Usage: < 80%
- Disk Usage: < 80%
- Connections: < max limit
Logs
Dashboard → Logs Filtres :- API: Requêtes REST
- Database: Queries SQL
- Auth: Login attempts
- Storage: Uploads/downloads
API Analytics
Dashboard → API Graphiques :- Requests per second
- Response times (p50, p95, p99)
- Error rates
- Cache hit ratio
Backups
Automatic Backups
Supabase crée automatiquement des backups : Free plan :- 1 backup par jour
- Rétention : 7 jours
- Backups PITR (Point In Time Recovery)
- Rétention : 7-30 jours
- Restore à n’importe quel point
Manual Backup
Sécurité
API Keys
Bonnes pratiques :- ✅
anon key: Safe pour frontend (protégé par RLS) - ❌
service_role key: Backend seulement, jamais exposé - 🔄 Régénérez les clés si compromises
RLS Testing
Testez toujours avec un utilisateur non-authentifié :SQL Injection Protection
Supabase protège automatiquement contre SQL injection via :- Prepared statements
- Parameterized queries
- RLS enforcement
Troubleshooting
Erreur : “relation does not exist”
Cause : Table non créée ou migration échouée Solution :- Vérifiez dans Table Editor que la table existe
- Réexécutez la migration dans SQL Editor
- Vérifiez les logs de migration
Erreur : “new row violates row-level security policy”
Cause : RLS bloque l’opération Solution :- Vérifiez que vous êtes authentifié
- Vérifiez les policies de la table
- Testez avec
service_role keypour bypasser RLS (debug uniquement)
Slow queries
Analyse :- Ajoutez des indexes
- Optimisez les queries
- Utilisez le cache
- Passez au plan Pro (plus de CPU)
Checklist production
Avant de lancer en production :- Toutes les migrations exécutées
- 13 tables créées
- RLS activé sur toutes les tables
- Policies testées
- 2 buckets Storage créés
- User admin créé et testé
- Backups automatiques activés
- Monitoring configuré
- Variables env dans Netlify
- Test complet de l’app
