Architecture Overview
Vue d'ensemble
Le projet suit actuellement une architecture en trois couches:
frontpour l'interface et la session utilisateurbackpour l'API, la validation d'acces et les regles metier- Supabase pour l'auth, le stockage des donnees et les politiques RLS
Frontend
Le frontend Nuxt:
- ouvre une session utilisateur via Supabase Auth
- recupere le profil utilisateur dans
profiles - conserve le contexte d'entreprise courant
- appelle soit Supabase directement, soit le backend selon le niveau de migration du flux
Fichiers importants:
- front/composables/useAuth.ts
- front/composables/useEntreprises.ts
- front/composables/useEntrepriseContext.ts
Backend
Le backend Nest:
- charge
back/.envvia@nestjs/config - verifie le bearer token Supabase
- charge le
profileet lerolede l'utilisateur - expose des routes metier protegees
- utilise Supabase cote serveur avec une cle
publishableousecret
Fichiers importants:
- back/src/supabase/supabase.service.ts
- back/src/auth/guards/supabase-auth.guard.ts
- back/src/auth/guards/roles.guard.ts
- back/src/enterprises/enterprises.controller.ts
- back/src/enterprises/enterprises.service.ts
Authentification et autorisation
Le backend distingue trois notions:
- identite applicative: cle Supabase
publishableousecret - identite utilisateur: token Supabase de session
- autorisation metier:
profiles.role.slugetprofiles.enterprise_id
Regle importante:
- la cle serveur ne remplace jamais le token utilisateur
- le token utilisateur ne remplace jamais la cle applicative
Strategie de migration
Strategie actuelle:
- migrer d'abord les lectures metier a fort impact
- conserver le frontend fonctionnel pendant la transition
- centraliser progressivement les acces sensibles dans
back
Etat du domaine enterprises:
fetchAll()passe parGET /enterprisessurbackGET /enterprisesexclut explicitement les entreprises de typepersonalfetchById()et les mutations restent cotefrontvers Supabase
Tests
Deux niveaux de tests existent sur le backend pour enterprises:
- tests unitaires sur la logique metier du service
- tests d'integration backend avec guards reels et
SupabaseServicemocke
Fichiers: