Grace
Référence

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

RouteContenu
/loginConnexion / création de compte : e-mail + mot de passe, Google, ou SSO d'organisation.
/Accueil (sélection d'un projet ou création).
/catalogCatalogue : 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/:idFiche talent : présentation, graphe des dépendances directes (cliquable), rôles / déclencheurs / budget, tests de conformité, aperçu compact, Installer.
/orgEspace organisation : membres & rôles, invitations, statut, SSO et hébergement de code. Une navigation persistante donne accès aux vues analytiques autorisées.
/org/insightsSanté opérationnelle de l'organisation active (owner/admin d'organisation).
/org/talent-adoptionAdoption des talents dans les projets de l'organisation active (owner/admin d'organisation).
/org/expertisesCréation, vérification, publication et cycle de vie des talents propres à l’organisation (expertises privées côté API, owner/admin d’organisation).
/org/newCréation d'une organisation.
/accept-invitation/:idAcceptation d'une invitation reçue par e-mail.
/projects/newCréation projet (dans l'organisation active) → onboarding 2 étapes (.mcp.json + stub CLAUDE.md).
/projects/:idDé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 + stub CLAUDE.md.
  • Validation CI (repliable) — config dependency-cruiser gé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/usage

Approbation 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).

On this page