Hello Pomelo

Question 3

Architecture d’un portail unifié

Dashboard unifié pour accéder aux services métiers existants. On ne part pas d’un greenfield microservices : on compose un portail d’intégration avec SSO, au-dessus des apps déjà en place. Le détail complet est dans ARCHITECTURE.md (~20 sections).

Infrastructure existante

Quatre systems of record indépendants — le portail est le system of engagement, pas un ERP de remplacement.

App RH
Employés, congés, paie — system of record existant, non réécrit.
App CRM
Clients, opportunités, devis — intégrée via BFF / adaptateurs.
App Finance
Comptabilité, factures, reporting — isolation d’erreurs par domaine.
App Projets
Tâches, planning, time tracking — même shell, même SSO.

Piliers de la proposition

Stack dashboard
Next.js 16, React 19, TypeScript, Tailwind v4, shadcn/Base UI, shell multi-environnements.
SSO OIDC (Clerk)
IdP managé en démo ; session via proxy ; auth.protect() sur le layout /dashboard.
Authn ≠ Authz
Clerk authentifie ; le BFF et les apps métier autorisent (RBAC progressif).
BFF d’intégration
Agrégation, normalisation DTO, secrets côté serveur — pas d’accès direct browser → apps.
Observabilité & isolation
Timeouts / dégradation locale par domaine, logs structurés, tracing BFF → apps.
Évolutions
Scaling horizontal, bascule IdP enterprise, clients mobiles sur le même OIDC + BFF.

Vue logique

Identity Provider (Clerk — OIDC démo)
              |
             SSO
              |
   Unified Dashboard (Next.js shell)
   Espace partagé · RH · CRM · Finance · Projets
              |
         BFF / Route Handlers
      /     |      |      \
    RH     CRM  Finance  Projets
   (apps métier existantes)

Contenu de ARCHITECTURE.md

  • Posture (system of engagement vs systems of record)
  • Stack complète & justification
  • SSO Clerk + alternatives (Entra, Okta, Keycloak)
  • Sessions / tokens & resource-based protect
  • RBAC progressif (portail → BFF → apps)
  • BFF, anti-corruption, isolation d’erreurs
  • Sécurité, déploiement Coolify, scaling, mobile
  • Trade-offs, roadmap V0→V3, mapping dépôt

Démo dans ce dépôt

  • Shell /dashboard avec switcher d’environnements et pages métier illustratives.
  • SSO Clerk : auth.protect() sur le layout dashboard (resource-based, plus de createRouteMatcher).
  • En production, les variables NEXT_PUBLIC_CLERK_* doivent être présentes au build Docker (voir README).