Guide Administrateur Système — Pixel Night
Variables d'environnement
Fichier .env.local (développement)
# ── Supabase ──────────────────────────────────────────────────────
# Dashboard Supabase → Settings → API
NEXT_PUBLIC_SUPABASE_URL=https://<project-ref>.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ... # ⚠ Ne jamais exposer côté client
# ── TMDb ──────────────────────────────────────────────────────────
# themoviedb.org → Paramètres → API → API Read Access Token
TMDB_API_READ_ACCESS_TOKEN=eyJ...
Important :
TMDB_API_READ_ACCESS_TOKENest la seule source pour le token TMDb. Il est résolu exclusivement depuis l'environnement serveur — il n'est jamais stocké en base de données.
Variables requises / optionnelles
| Variable | Type | Requis | Description |
|---|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Public | ✅ | URL projet Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Public | ✅ | Clé publique Supabase |
SUPABASE_SERVICE_ROLE_KEY | Secret | ✅ | Clé service role (jamais client) |
TMDB_API_READ_ACCESS_TOKEN | Secret | ✅ | Token TMDb (API Read Access Token) |
Configuration Supabase
1. Créer le projet
- Aller sur supabase.com → New project
- Choisir une région proche (ex:
eu-west-2pour la France) - Récupérer les clés dans Settings → API
2. Configurer l'authentification
Dans Authentication → Providers :
- Activer Email (Email + Password)
- Désactiver "Confirm email" si vous souhaitez une inscription immédiate (développement)
- En production : activer la confirmation par email, configurer SMTP dans Auth → SMTP Settings
3. Exécuter les migrations SQL
Dans le SQL Editor de Supabase, exécuter dans l'ordre :
-- 1. Tables de base
-- → scripts/001_sp_create_tables.sql
-- 2. Politiques RLS
-- → scripts/002_sp_rls_policies.sql
-- 3. Trigger profil auto
-- → scripts/003_sp_profile_trigger.sql
-- 4. Phase film_proposal + durée
-- → scripts/004_sp_add_projection_proposals.sql
-- 5. Suppression de la colonne tmdb_token_encrypted
-- → scripts/005_sp_remove_tmdb_token.sql
-- 6. Table sp_salles
-- → scripts/006_sp_add_salles.sql
-- 7. Grants salles
-- → scripts/007_sp_grants_salles.sql
4. Créer le premier compte organisateur
- Déployer l'application
- Aller sur
/auth/sign-up - Créer un compte — un enregistrement est automatiquement créé dans
sp_profilesvia le trigger
5. Politiques RLS importantes
Les politiques définies dans 002_sp_rls_policies.sql :
sp_soirees: lecture publique, écriture restreinte àauth.uid() = created_bysp_theme_votes/sp_film_votes: insertion via service role uniquementsp_salles: lecture/écriture restreinte au propriétaire
Gestion du token TMDb
Configuration
- Obtenir un token sur themoviedb.org → API Read Access Token (le long token Bearer)
- Ajouter
TMDB_API_READ_ACCESS_TOKENdans les variables d'environnement Vercel (secret, tous environnements)
Vérifier la configuration
GET /api/tmdb/status retourne :
{ "configured": true }
// ou
{ "configured": false }
Rotation du token TMDb
- Générer un nouveau token sur themoviedb.org
- Mettre à jour
TMDB_API_READ_ACCESS_TOKENdans les variables d'environnement Vercel - Redéployer
Sauvegardes
Supabase effectue des sauvegardes automatiques quotidiennes (plan Pro) ou hebdomadaires (plan Free).
Tables critiques à sauvegarder :
sp_soirees— historique des soiréessp_salles— configuration des cinémassp_themes— catalogue de thèmes personnaliséssp_profiles— comptes organisateurs
Exporter manuellement via Database → Backups ou pg_dump via la connection string Supabase.
Monitoring
- Vercel : logs de build et runtime dans le dashboard Vercel → Functions
- Supabase : logs des requêtes dans Logs → API et Logs → Auth
- Vercel Analytics : intégré via
@vercel/analytics/nextdansapp/layout.tsx
Limites de taux (rate limits)
| Service | Limite | Mitigation |
|---|---|---|
| TMDb API | ~40 req/s | lib/tmdb-client.ts : max 8 requêtes parallèles (p-limit) + retry automatique sur 429 |
| GitHub API (roadmap) | 60 req/h (sans auth) | ISR cache 5 min — 12 appels/h max |
| Supabase Free | 500 MB DB, 2 GB transfert/mois | Surveiller dans le dashboard Supabase |
Liste de contrôle post-déploiement
□ NEXT_PUBLIC_SUPABASE_URL configurée
□ NEXT_PUBLIC_SUPABASE_ANON_KEY configurée
□ SUPABASE_SERVICE_ROLE_KEY configurée (secret Vercel)
□ TMDB_API_READ_ACCESS_TOKEN configurée (secret Vercel)
□ Toutes les migrations SQL exécutées (001 → 007)
□ Compte organisateur créé
□ GET /api/tmdb/status → { configured: true }
□ Soirée de test créée et complétée