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 » — le dashboard reste utilisable mais l'accès MCP n'est ouvert qu'une fois l'organisation approuvée par un admin plateforme. 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. |
/catalog/:id | Fiche talent : présentation, graphe des dépendances directes (cliquable), rôles / déclencheurs / budget, tests de conformité, aperçu compact, Installer. |
/personas | Personas : liste (builtin YAML + custom DB), créer / éditer / dupliquer / supprimer un persona custom. |
/org | Paramètres de l'organisation : membres & rôles, invitations, statut d'approbation, configuration SSO. |
/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, personas) 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 ?, personas). Ces liens sont construits à partir de
VITE_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 persona » 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. - Pertinence (repliable) — 4 sliders (
floor,beta,margin,budget) qui surchargent par projet les réglages du filtrage sémantique ; effectif seulement siGRACE_RELEVANCE=embeddings. Voir Pertinence sémantique. - Onglet Activité — journal des actions tracées + tendance des tokens, lu depuis
trace_events(voir Tracing & activité). - 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 · POST /web/orgs/current/resubmit (statut d'approbation, re-soumission)
GET|POST /web/orgs/current/sso · POST /web/orgs/current/sso/test (config SSO de l'organisation)
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-persona
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/personas · POST /web/personas · PATCH|DELETE /web/personas/:id · POST /web/personas/:id/duplicate
GET /web/activity/summary · GET /web/projects/:id/traces · GET /web/projects/:id/traces/summary
GET /web/projects/:id/talents/:talentId/usageDesign
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).