No description
Find a file
Corentin JOGUET c8e9b4d4ea
Some checks are pending
CI / Lint bridge (Biome) (push) Waiting to run
CI / Type-check bridge (push) Blocked by required conditions
CI / Tests unit bridge (push) Blocked by required conditions
CI / Tests integration bridge (push) Blocked by required conditions
CI / Security scan (push) Waiting to run
CI / Docker build + healthcheck (push) Blocked by required conditions
feat(bridge): bloc 3 — routes REST Tier 1 + auth + repos Baserow (10 endpoints)
Wiring HTTP du bridge service. 10 endpoints livres (cf docs/19 §6.1-6.5) :
- GET /api/v1/personnes (+ /:id, + /:id/dashboard)
- GET /api/v1/formations (+ /:id avec rollups blocs/modules)
- GET /api/v1/projets (+ /:id avec rollups taches)
- POST /api/v1/modules/:id/attribuer (RG-01 -> 422, role/heures invalides -> 400)
- POST /api/v1/interventions (validation role developpeur + heures > 0)
- PATCH /api/v1/attributions/:id/heures-realisees (409 si annule/realise)

Layers ajoutees :
- src/middleware/auth.ts : Bearer brg_*, scopes JSON-encoded BRIDGE_API_TOKENS, admin:* wildcard
- src/middleware/error-handler.ts : BridgeError -> JSON shape standard
- src/lib/container.ts : DI singleton (Baserow + Redis + 9 repos), setContainer testable
- src/lib/http.ts : parseListQuery + parseBody zod helper
- src/repos/baserow-repo.ts : BaseRepo<T> abstrait + 9 sous-classes (mapping Row<->Domain)
- src/routes/{personnes,formations,projets,modules,interventions,attributions}.ts

src/index.ts reecrit : buildApp() + initContainer + auth sur /api/v1/* + ready check Baserow+Redis.

Tests : 163/163 verts (12 suites domain + 8 nouvelles : auth, repos, 6 routes).
Coverage src global : 70.77% (cible 60%). Domain 97.86%, routes 96%, middleware 86%.

Choix : BaseRepo abstrait (pas mega-generic, Ockham) ; FakeRepos in-memory pour tests routes
(pas de testcontainers ici, c'est Bloc 7) ; mapping erreurs domain -> HTTP par message texte
(fragile, sera refactor en DomainError typees au Bloc 3.2).

Hors scope (a venir) :
- Bloc 5 : rate limiting Redis
- Bloc 7 : webhook handlers Baserow + sync bidirec + cache invalidation
- Bloc 3.2 : routes /docmost/*, /sync/*, /rapports/*

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 20:01:36 +02:00
.claude feat(workflows): create 5 BYAN workflows for agent collaboration 2026-05-07 19:30:48 +02:00
.github ops(ci): fix docker-build job — setup .env BEFORE compose build 2026-05-07 12:29:35 +02:00
_byan-output/fast-app/formation-hub feat(agents): complete BYAN INT for 3 more agents + session resume MD 2026-05-07 19:26:17 +02:00
baserow/seed feat(seed): add I4 forms publics + space etudiant + I5 healthcheck etendu 2026-05-07 18:49:00 +02:00
bridge feat(bridge): bloc 3 — routes REST Tier 1 + auth + repos Baserow (10 endpoints) 2026-05-07 20:01:36 +02:00
docmost/setup feat(seed): add I4 forms publics + space etudiant + I5 healthcheck etendu 2026-05-07 18:49:00 +02:00
docs ops: fix CI run — generate package-lock + bump testcontainers + doc 19 sync bidirec 2026-05-07 12:20:44 +02:00
infra ops(infra): add Forgejo Actions Runner skeleton 2026-05-07 13:49:19 +02:00
scripts feat(seed): add I4 forms publics + space etudiant + I5 healthcheck etendu 2026-05-07 18:49:00 +02:00
.editorconfig chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
.env.example chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
.gitignore feat(seed): add I4 forms publics + space etudiant + I5 healthcheck etendu 2026-05-07 18:49:00 +02:00
CHANGELOG.md chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
compose.prod.yml chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
compose.staging.yml chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
compose.yml chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
CONTRIBUTING.md chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
LICENSE chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
Makefile feat(seed): add I4 forms publics + space etudiant + I5 healthcheck etendu 2026-05-07 18:49:00 +02:00
README.md chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00
SECURITY.md chore: initial commit — formation-hub conception phase 2026-05-07 12:16:19 +02:00

formation-hub

Notion-like self-host pour Acadenice (CFA + Agence dev + Operations) : wiki collaboratif + bases de donnees structurees (suivi heures formation + projets clients agence + capacite par personne).

Stack

Composant Role License
Docmost Wiki collaboratif, spaces, share links, diagrammes natifs (Mermaid + Draw.io + Excalidraw depuis v0.3.0) AGPL-3.0
Baserow Bases de donnees typees (relations, rollups, formules, multi-vues) MIT (core)
bridge (Phase 2) Service Node TS qui expose Baserow comme nodes Tiptap dans Docmost MIT

Diagrammes

Docmost embarque nativement trois moteurs de diagrammes — zero config, zero dev :

  • Mermaid : diagrammes en syntaxe markdown (flowchart, sequence, ER, gantt, classe, state, journey...). Versionnable comme du code.
  • Draw.io : editeur visuel complet pour archi technique, BPMN, infra. Stocke en SVG attachment.
  • Excalidraw : whiteboard hand-drawn pour brainstorming, schemas pedagogiques, sketches. Stocke en SVG attachment.

Le MCD du projet (docs/06-merise-mcd.md) utilise un diagramme Mermaid ER. Ouvre-le dans Docmost ou Outline pour le rendu visuel.

Etat actuel (au 2026-05-07)

Phase 0 — Conception :

  • Discovery + scope etendu CFA + Agence approuve
  • ADR + CDC technique
  • Data dictionary, MCD, MLD, MCT, MOT, state diagrams, use cases, class diagram, activity diagrams
  • Repo structure & GitOps (CI/CD, SecOps, environnements)
  • Stack Docker compose locale (vanilla, sans bridge)
  • MPD Baserow (table-par-table)
  • Plan de tests
  • Plan de deployment + CI/CD prets
  • Plan d'operations

Phase 1+ : voir docs/04-cahier-des-charges-techniques.md section roadmap.

Demarrage local

cp .env.example .env
# editer .env avec des secrets reels
make up

Premier lancement : creer un compte admin Docmost et Baserow via l'UI.

Documentation

Numerotation logique : pourquoi → quoi → comment (concept) → comment (logique) → comment (physique) → comment (ops).

# Doc Theme
01 docs/01-discovery-recap.md Pourquoi (vision/contexte)
02 docs/02-scope-etendu-cfa-agence.md Quoi (perimetre approuve)
03 docs/03-decision-record.md Choix structurels (ADR)
04 docs/04-cahier-des-charges-techniques.md CDC technique (stack, NFR, roadmap)
05 docs/05-data-dictionary.md Donnees — vocabulaire
06 docs/06-merise-mcd.md Donnees — concept (ER, cardinalites)
07 docs/07-merise-mld.md Donnees — logique (schema relationnel)
08 docs/08-merise-mct.md Traitements — concept
09 docs/09-merise-mot.md Traitements — organisation (qui/quand/outil)
10 docs/10-state-diagrams.md Comportement — cycle de vie
11 docs/11-uml-use-cases.md Comportement — interactions
12 docs/12-uml-class-diagram.md Comportement — code OO
13 docs/13-uml-activity-diagrams.md Comportement — workflows complets
14 docs/14-repo-structure-gitops.md Code — arborescence + CI/CD + SecOps
15 docs/15-baserow-mpd.md Implementation — Baserow concret (table par table, formules, vues)
16 docs/16-plan-tests.md Qualite — pyramide tests, outils, coverage, acceptance
17 docs/17-plan-deployment.md Ops — provisionnement, CI/CD detaille, releases, migrations, rollback
18 docs/18-plan-operations.md Ops — monitoring, alerting, backups DR, runbooks, capacity
19 docs/19-bridge-api-design.md Bridge API — endpoints, auth, webhooks, cache, integration Tiptap

Methodologie

Merise Agile + 64 mantras BYAN. Data Dictionary First, MCD/MCT cross-validation, Ockham razor sur le scope, zero emoji dans le code et les commits.