Dashboard
L'app web : pages, modèle installé vs catalogue, endpoints /web/*.
platform/frontend/ — React 19 + Vite + Tailwind v4 + react-router + Mermaid. Auth par
session Better Auth (cookie httpOnly), client dans src/lib/auth-client.ts (plugins
organization, admin, multiSession, sso). Tape l'API backend sous /web/* ; l'auth vit sous
/api/auth/*.
Connexion & organisations
Trois voies de connexion : e-mail/mot de passe, Google OAuth, ou le SSO de son organisation (OIDC/SAML, routé par domaine e-mail). Après connexion, l'utilisateur crée ou rejoint une organisation (tenant) ; toute nouvelle organisation démarre en « en attente d'approbation ». Tant qu'un administrateur plateforme ne l'a pas approuvée, ses membres voient un écran d'attente avec l'étape suivante et peuvent seulement se déconnecter. Le dashboard, le catalogue, les projets et les API métier restent indisponibles. Un utilisateur membre de plusieurs organisations bascule de l'une à l'autre via la palette de commandes (⌘K), sans se ré-authentifier (multi-session).
Pages
| Route | Contenu |
|---|---|
/login | Connexion / création de compte : e-mail + mot de passe, Google, ou SSO d'organisation. |
/ | Accueil (sélection d'un projet ou création). |
/catalog | Catalogue : recherche + cards de tous les talents, précédés du bloc Spécialisations (liste builtin YAML + custom DB, créer / éditer / dupliquer / supprimer un spécialisation custom). Le bloc est masqué en mode installation groupée (?project=<id>). |
/catalog/:id | Fiche talent : présentation, graphe des dépendances directes (cliquable), rôles / déclencheurs / budget, tests de conformité, aperçu compact, Installer. |
/org | Espace organisation : membres & rôles, invitations, statut, SSO et hébergement de code. Une navigation persistante donne accès aux vues analytiques autorisées. |
/org/insights | Santé opérationnelle de l'organisation active (owner/admin d'organisation). |
/org/talent-adoption | Adoption des talents dans les projets de l'organisation active (owner/admin d'organisation). |
/org/expertises | Création, vérification, publication et cycle de vie des talents propres à l’organisation (expertises privées côté API, owner/admin d’organisation). |
/org/new | Création d'une organisation. |
/accept-invitation/:id | Acceptation d'une invitation reçue par e-mail. |
/projects/new | Création projet (dans l'organisation active) → onboarding 2 étapes (.mcp.json + stub CLAUDE.md). |
/projects/:id | Détail projet. |
Une palette de commandes globale (⌘K / Ctrl+K) accélère la navigation (projets, catalogue, spécialisations) et permet de basculer d'organisation active.
L'administration plateforme (rôle user.role="admin") passe par les endpoints /web/admin/*
(liste des organisations et de leur statut, approuver / rejeter / suspendre / réactiver, users,
évènements de sécurité).
Le dashboard renvoie vers cette documentation à des points clés : entrée Documentation de la
barre latérale, guide de démarrage (accueil), onboarding Brancher un projet, et fiches conceptuelles
(catalogue → Qu'est-ce qu'un talent ?, spécialisations). Ces liens utilisent la configuration runtime
GRACE_DOCS_BASE (voir Variables d'environnement) et s'ouvrent dans un nouvel onglet.
Modèle « installé » vs « catalogue »
Trois états par talent : non installé → installé mais désactivé → installé et actif. La page projet n'affiche que les installés ; le catalogue présente tout. Le MCP ne sert au LLM que les talents actifs.
Page projet
- Schéma des talents installés — graphe Mermaid (activé / désactivé / requis non installé / manquant), nœuds cliquables, stats Installés / Actifs / Manquants.
- Liste des installés — toggle, désinstaller, « voir le modèle » (diagramme structurel).
- État vide — « Démarrer avec un spécialisation » ou catalogue.
- Connexion MCP (repliable) — retrouve / régénère le
.mcp.json+ stubCLAUDE.md. - Validation CI (repliable) — config
dependency-cruisergénérée depuis les talents. - Onglet Activité — journal chronologique des actions tracées, lu depuis
trace_events(voir Tracing & activité). Chaque appel MCP indique l'outil de développement d'où il vient, et le tiroir de détail nomme l'auteur du geste ainsi que les talents entrés et sortis de la sélection. - Supprimer le projet (confirmation inline ; cascade DB).
Endpoints web (/web/*, session Better Auth, scopés par l'organisation active)
L'authentification (sign-in/up, Google, SSO, organisations, admin, sessions) est servie par
Better Auth sous /api/auth/*. Les endpoints métier restent sous /web/* :
GET /web/orgs/current/status (statut d'approbation)
GET|POST /web/orgs/current/sso · POST /web/orgs/current/sso/test (config SSO de l'organisation)
GET|POST /web/orgs/current/expertises (liste filtrée, création)
GET|PATCH /web/orgs/current/expertises/:id (détail, nouvelle version de travail)
POST /web/orgs/current/expertises/:id/trigger-proposal (proposition de déclencheurs)
PUT /web/orgs/current/expertises/:id/triggers (confirmation des déclencheurs)
POST /web/orgs/current/expertises/:id/{activate|publish|deactivate|reactivate}
GET /web/admin/organizations · POST /web/admin/organizations/:id/{approve|reject|suspend|reactivate}
GET /web/admin/users · GET /web/admin/security-events (admin plateforme)
GET /web/projects · POST /web/projects · GET|DELETE /web/projects/:id
GET /web/projects/:id/setup · POST /web/projects/:id/token (config / régénération token)
GET /web/projects/:id/installed
POST /web/projects/:id/talents (install) · PATCH (toggle) · DELETE /:talentId (uninstall)
POST /web/projects/:id/apply-specialization
POST /web/projects/:id/file (lecture d'un fichier de talent)
GET /web/projects/:id/validator-config (sortie B / CI)
GET|PUT|DELETE /web/projects/:id/relevance (réglages pertinence par projet)
GET /web/catalog[?query] · GET /web/catalog/facets · GET /web/catalog/:id
GET /web/specializations · POST /web/specializations · PATCH|DELETE /web/specializations/:id · POST /web/specializations/:id/duplicate
GET /web/activity/summary · GET /web/projects/:id/traces · GET /web/projects/:id/traces/summary
GET /web/projects/:id/talents/:talentId/usageApprobation d’organisation
Toutes les routes métier /web/* exigent que l’organisation active soit approuvée. Dans le cas
contraire, elles renvoient 403 organization_not_approved; seule
GET /web/orgs/current/status reste disponible afin d’afficher l’état d’attente. Les routes
d’administration plateforme restent accessibles à un administrateur plateforme pour qu’il puisse
approuver l’organisation.
Les réponses expertise sont scopées par l'organisation active et exigent un rôle owner/admin. Une
ressource d'une autre organisation est masquée en 404. Les écritures portent une révision
attendue ; une concurrence renvoie 409 expertise_revision_conflict avec la version serveur à
comparer.
→ Guide utilisateur : Gérer les talents de l’organisation.
Design
Direction « console claire et moderne » : accent iris #6D5EF6, ambre #E0900C pour
les manquants. Type : Space Grotesk (display) + Plus Jakarta Sans (corps) +
JetBrains Mono (IDs / code). Tokens et utilitaires (.card, .btn-primary, .input,
.chip…) dans platform/frontend/src/index.css (@theme Tailwind v4).