|
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
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>
|
||
|---|---|---|
| .claude | ||
| .github | ||
| _byan-output/fast-app/formation-hub | ||
| baserow/seed | ||
| bridge | ||
| docmost/setup | ||
| docs | ||
| infra | ||
| scripts | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| CHANGELOG.md | ||
| compose.prod.yml | ||
| compose.staging.yml | ||
| compose.yml | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| SECURITY.md | ||
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
- Docmost : http://localhost:3000
- Baserow : http://localhost:8080
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.