Vue d’ensemble
Gëstu utilise Supabase comme backend principal : base de données PostgreSQL, authentification, stockage de fichiers et API REST automatique.
Tables principales
partners
Représente un partenaire (cabinet d’audit, consultant).
profiles
Étend auth.users avec les données métier de l’utilisateur.
products
Catalogue des produits disponibles sur la plateforme.
user_product_access
Accès d’un utilisateur à un produit spécifique.
missions
Missions d’audit créées par les partenaires.
risks
Risques dans les cartographies Gëstu Risk.
access_requests
Demandes d’accès produit soumises depuis le Hub.
Row Level Security (RLS)
Toutes les tables ont RLS activée. Les politiques garantissent qu’un utilisateur ne peut accéder qu’aux données de son partenaire.
Fonctions utilitaires
Ces fonctions sont définies en SECURITY DEFINER pour éviter les récursions dans les politiques RLS.
Authentification
Gëstu utilise supabase-js avec onAuthStateChange pour gérer le cycle de vie de la session.
Règles critiques
- Ne jamais
await dans le handler SIGNED_IN — bloque signInWithPassword() indéfiniment
loadProfile() est appelé en fire-and-forget dans SIGNED_IN
- Seul
INITIAL_SESSION peut await loadProfile() (chargement initial avec timeout 6s)
- Un seul
onAuthStateChange global dans src/lib/authInit.ts
Variables d’environnement
Ne commitez jamais les variables d’environnement dans Git. Utilisez .env.local pour le développement local et les variables d’environnement Vercel pour la production.