Skip to content

Architecture Overview

Vue d'ensemble

Le projet suit actuellement une architecture en trois couches:

  • front pour l'interface et la session utilisateur
  • back pour 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:

Backend

Le backend Nest:

  • charge back/.env via @nestjs/config
  • verifie le bearer token Supabase
  • charge le profile et le role de l'utilisateur
  • expose des routes metier protegees
  • utilise Supabase cote serveur avec une cle publishable ou secret

Fichiers importants:

Authentification et autorisation

Le backend distingue trois notions:

  • identite applicative: cle Supabase publishable ou secret
  • identite utilisateur: token Supabase de session
  • autorisation metier: profiles.role.slug et profiles.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 par GET /enterprises sur back
  • GET /enterprises exclut explicitement les entreprises de type personal
  • fetchById() et les mutations restent cote front vers 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 SupabaseService mocke

Fichiers: