Wiki/docs/01-discovery-recap.md
Corentin JOGUET 668576cdc4 chore: initial commit — formation-hub conception phase
Conception complete (Phase 0) pour formation-hub Acadenice :

- 19 docs Merise Agile + UML + GitOps + plans (tests/deploy/ops/api)
  cf docs/00-readme.md pour l'index complet
- Stack Docker compose (Docmost + Baserow + Postgres + Redis + MinIO local FS)
  compose.yml + compose.staging.yml + compose.prod.yml
- CI/CD GitHub Actions skeleton (ci, deploy-staging, deploy-prod)
- Bridge service skeleton (Hono + TS + Biome + Vitest + zod + pino)
- Templates GitHub : PR + 3 issue types + CODEOWNERS + dependabot.yml
- Scripts ops : healthcheck, backup quotidien, smoke-test post-deploy
- LICENSE AGPL-3.0 + SECURITY.md + CONTRIBUTING.md + CHANGELOG.md
- Diagramme drawIO archi infra (XML importable dans diagrams.net)

Decisions structurelles enregistrees :
- Scope CFA + Agence avec entite PERSONNE pivot multi-roles (ADR-001)
- Stack composite Docmost AGPL + Baserow MIT + bridge custom (ADR-001)
- Path B : UX quasi-unified via Tiptap node-views custom (ADR-002)
- Monorepo trunk-based development (ADR-003)
- Postgres separe Docmost/Baserow (ADR-004)
- Bridge stack Node 22 + Hono (ADR-005)
- Repo neuf prefere a fork Docmost
- Prod-like des le jour 1 (pas MVP)
2026-05-07 12:16:19 +02:00

86 lines
4.1 KiB
Markdown

# Discovery — Recap
> Synthese de la phase de recherche, projets evalues, blocages identifies, decision finale.
> Date : 2026-05-07
## Contexte metier
- Centre de formation, ~20 employes (admin + formateurs)
- Acces clients ponctuel par lien partage
- Etudiants avec espaces personnels libres
- Cible : 90-100 utilisateurs total, ~30 simultanes peak
## Besoin fonctionnel
1. Wiki collaboratif (SOPs, supports formation, doc interne)
2. Bases structurees liees pour le suivi des heures de formation :
- Formations (programmes complets)
- Blocs (blocs de competences)
- Modules (lecons individuelles)
- Formateurs (avec capacite annuelle)
3. Calculs automatiques d'heures attribuees / restantes par formation, par bloc, par module, par formateur
4. Bidirec backlinks dans le wiki
5. Editeur dual-mode (WYSIWYG + raw markdown a la Alexandrie Hub)
6. Self-host obligatoire, illimite users, AGPL/MIT acceptable
## Projets OSS evalues
### Elimines
| Projet | Raison |
|--------|--------|
| Notion (cloud) | Pas self-host, prix au seat |
| AFFiNE | Self-host limite a 10 seats, Team License $10/seat/mois = ~2200€/an pour 20 users |
| AppFlowy | Self-host limite a 1 user + 3 guests free |
| Outline (getoutline) | Pas de bidirec backlinks reel + license BSL (restrictions commerciales) |
| SiYuan | Excellent dual-mode + bidirec mais conçu single-user, refactor team trop lourd |
| TriliumNext | Single-user origine |
| Logseq | Outliner Roam-like, stack Clojure rare, DB version en beta |
| Anytype | License "Any Source Available" non-OSI, fork commercial = zone grise |
| HedgeDoc / BookStack | Pas de bidirec, pas de DBs |
| Alexandrie Hub | Dev solo, bus factor de 1, pas viable pour boite. Sert de **reference UX** dual-mode. |
Sources verifiees :
- [AFFiNE 10-seat limit](https://docs.affine.pro/self-host-affine/features/basic-user-quota)
- [AppFlowy 1-user limit](https://github.com/AppFlowy-IO/AppFlowy-Cloud/issues/1570)
- [Docmost AGPL pricing](https://docmost.com/pricing)
- [Outline backlinks doc](https://docs.getoutline.com/s/guide/doc/backlinks-f9YSmlNSkr)
### Retenus
| Projet | Role | Pourquoi |
|--------|------|----------|
| **Docmost** | Wiki collaboratif | AGPL, users illimites self-host, team workspaces + spaces + share links natifs, stack TS/NestJS/React/Tiptap mainstream, ultra-actif (release fin avril 2026) |
| **Baserow** | DBs structurees | MIT core, users illimites self-host, multi-vues (table/kanban/calendar/timeline/gallery), formules, rollups, relations, real-time collab |
## Path retenu — Path B
Le user a confirme le 2026-05-07 : **on ne reinvente pas la roue**, on utilise Docmost + Baserow tels quels et on construit un **bridge custom** (Node TS) qui :
- Expose l'API Baserow comme nodes Tiptap inline dans Docmost
- Fournit des routes de rendering `/formateur/:id` et similaires comme pages Docmost-style
- Cache Redis pour eviter de spam Baserow API
L'utilisateur final ne doit pas voir l'UI Baserow. Cliquer sur un formateur depuis le wiki = arriver sur une page Docmost qui contient les proprietes (capacite, heures restantes) en haut + zone wiki rich content en bas.
## Profil dev
- AdminSys + DevOps solo (Docker + Traefik + scripts ops)
- Apprend React + Tiptap au besoin (courbe d'apprentissage acceptee)
- Possibilite freelance ponctuel pour Tiptap node-views (~2 jours pair-programming)
## Manques connus de Docmost
| Manque | Source | Cout dev estime |
|--------|--------|-----------------|
| Bidirec backlinks | [issue #1122](https://github.com/docmost/docmost/issues/1122) | 2-4 semaines |
| Dual-mode editor (WYSIWYG ↔ raw MD) | aucune doc | 2-3 semaines |
| Guest sharing fin (Notion-style) | [discussion #1586](https://github.com/docmost/docmost/discussions/1586) | 1-2 semaines |
| DBs Notion-style integrees | non roadmap | **delegue a Baserow + bridge** |
## Ordre d'attaque
1. Phase 1 — Stack vanilla locale, schema Baserow, MCD/MCT documentes
2. Phase 1 bis — Deploiement staging avec Traefik, CI/CD GitHub Actions
3. Phase 2 — Bridge Node TS, premier Tiptap node-view custom, route `/formateur/:id`
4. Phase 3 — Bidirec backlinks Docmost, dual-mode editor (selon douleur reelle)