living-documentation 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +329 -0
  3. package/dist/bin/cli.d.ts +3 -0
  4. package/dist/bin/cli.d.ts.map +1 -0
  5. package/dist/bin/cli.js +62 -0
  6. package/dist/bin/cli.js.map +1 -0
  7. package/dist/src/frontend/admin.html +1073 -0
  8. package/dist/src/frontend/annotations.js +546 -0
  9. package/dist/src/frontend/boot.js +90 -0
  10. package/dist/src/frontend/config.js +19 -0
  11. package/dist/src/frontend/dark-mode.js +20 -0
  12. package/dist/src/frontend/diagram/alignment.js +161 -0
  13. package/dist/src/frontend/diagram/clipboard.js +172 -0
  14. package/dist/src/frontend/diagram/constants.js +109 -0
  15. package/dist/src/frontend/diagram/debug.js +43 -0
  16. package/dist/src/frontend/diagram/edge-panel.js +260 -0
  17. package/dist/src/frontend/diagram/edge-rendering.js +12 -0
  18. package/dist/src/frontend/diagram/grid.js +78 -0
  19. package/dist/src/frontend/diagram/groups.js +102 -0
  20. package/dist/src/frontend/diagram/history.js +153 -0
  21. package/dist/src/frontend/diagram/image-name-modal.js +48 -0
  22. package/dist/src/frontend/diagram/image-upload.js +36 -0
  23. package/dist/src/frontend/diagram/label-editor.js +115 -0
  24. package/dist/src/frontend/diagram/link-panel.js +144 -0
  25. package/dist/src/frontend/diagram/main.js +299 -0
  26. package/dist/src/frontend/diagram/network.js +1473 -0
  27. package/dist/src/frontend/diagram/node-panel.js +267 -0
  28. package/dist/src/frontend/diagram/node-rendering.js +773 -0
  29. package/dist/src/frontend/diagram/persistence.js +161 -0
  30. package/dist/src/frontend/diagram/ports.js +386 -0
  31. package/dist/src/frontend/diagram/selection-overlay.js +336 -0
  32. package/dist/src/frontend/diagram/state.js +39 -0
  33. package/dist/src/frontend/diagram/t.js +3 -0
  34. package/dist/src/frontend/diagram/toast.js +21 -0
  35. package/dist/src/frontend/diagram/unlock-hold.js +182 -0
  36. package/dist/src/frontend/diagram/zoom.js +20 -0
  37. package/dist/src/frontend/diagram-link-modal.js +137 -0
  38. package/dist/src/frontend/diagram.html +1279 -0
  39. package/dist/src/frontend/documents.js +373 -0
  40. package/dist/src/frontend/export.js +338 -0
  41. package/dist/src/frontend/i18n/en.json +406 -0
  42. package/dist/src/frontend/i18n/fr.json +406 -0
  43. package/dist/src/frontend/i18n.js +32 -0
  44. package/dist/src/frontend/image-paste.js +101 -0
  45. package/dist/src/frontend/index.html +2314 -0
  46. package/dist/src/frontend/misc.js +25 -0
  47. package/dist/src/frontend/new-doc-modal.js +260 -0
  48. package/dist/src/frontend/new-folder-modal.js +174 -0
  49. package/dist/src/frontend/search.js +157 -0
  50. package/dist/src/frontend/sidebar-helpers.js +58 -0
  51. package/dist/src/frontend/sidebar.js +182 -0
  52. package/dist/src/frontend/snippet-detect.js +25 -0
  53. package/dist/src/frontend/snippet-table.js +85 -0
  54. package/dist/src/frontend/snippet-tree.js +94 -0
  55. package/dist/src/frontend/snippets.js +534 -0
  56. package/dist/src/frontend/state.js +28 -0
  57. package/dist/src/frontend/utils.js +21 -0
  58. package/dist/src/frontend/vendor/wordcloud2.js +1187 -0
  59. package/dist/src/frontend/wordcloud.js +693 -0
  60. package/dist/src/lib/config.d.ts +17 -0
  61. package/dist/src/lib/config.d.ts.map +1 -0
  62. package/dist/src/lib/config.js +79 -0
  63. package/dist/src/lib/config.js.map +1 -0
  64. package/dist/src/lib/parser.d.ts +11 -0
  65. package/dist/src/lib/parser.d.ts.map +1 -0
  66. package/dist/src/lib/parser.js +111 -0
  67. package/dist/src/lib/parser.js.map +1 -0
  68. package/dist/src/mcp/server.d.ts +3 -0
  69. package/dist/src/mcp/server.d.ts.map +1 -0
  70. package/dist/src/mcp/server.js +986 -0
  71. package/dist/src/mcp/server.js.map +1 -0
  72. package/dist/src/mcp/tools/diagrams.d.ts +44 -0
  73. package/dist/src/mcp/tools/diagrams.d.ts.map +1 -0
  74. package/dist/src/mcp/tools/diagrams.js +245 -0
  75. package/dist/src/mcp/tools/diagrams.js.map +1 -0
  76. package/dist/src/mcp/tools/documents.d.ts +26 -0
  77. package/dist/src/mcp/tools/documents.d.ts.map +1 -0
  78. package/dist/src/mcp/tools/documents.js +127 -0
  79. package/dist/src/mcp/tools/documents.js.map +1 -0
  80. package/dist/src/mcp/tools/source.d.ts +29 -0
  81. package/dist/src/mcp/tools/source.d.ts.map +1 -0
  82. package/dist/src/mcp/tools/source.js +200 -0
  83. package/dist/src/mcp/tools/source.js.map +1 -0
  84. package/dist/src/routes/annotations.d.ts +3 -0
  85. package/dist/src/routes/annotations.d.ts.map +1 -0
  86. package/dist/src/routes/annotations.js +83 -0
  87. package/dist/src/routes/annotations.js.map +1 -0
  88. package/dist/src/routes/browse.d.ts +3 -0
  89. package/dist/src/routes/browse.d.ts.map +1 -0
  90. package/dist/src/routes/browse.js +75 -0
  91. package/dist/src/routes/browse.js.map +1 -0
  92. package/dist/src/routes/config.d.ts +3 -0
  93. package/dist/src/routes/config.d.ts.map +1 -0
  94. package/dist/src/routes/config.js +97 -0
  95. package/dist/src/routes/config.js.map +1 -0
  96. package/dist/src/routes/diagrams.d.ts +3 -0
  97. package/dist/src/routes/diagrams.d.ts.map +1 -0
  98. package/dist/src/routes/diagrams.js +69 -0
  99. package/dist/src/routes/diagrams.js.map +1 -0
  100. package/dist/src/routes/documents.d.ts +8 -0
  101. package/dist/src/routes/documents.d.ts.map +1 -0
  102. package/dist/src/routes/documents.js +332 -0
  103. package/dist/src/routes/documents.js.map +1 -0
  104. package/dist/src/routes/export.d.ts +3 -0
  105. package/dist/src/routes/export.d.ts.map +1 -0
  106. package/dist/src/routes/export.js +277 -0
  107. package/dist/src/routes/export.js.map +1 -0
  108. package/dist/src/routes/images.d.ts +3 -0
  109. package/dist/src/routes/images.d.ts.map +1 -0
  110. package/dist/src/routes/images.js +49 -0
  111. package/dist/src/routes/images.js.map +1 -0
  112. package/dist/src/routes/wordcloud.d.ts +3 -0
  113. package/dist/src/routes/wordcloud.d.ts.map +1 -0
  114. package/dist/src/routes/wordcloud.js +95 -0
  115. package/dist/src/routes/wordcloud.js.map +1 -0
  116. package/dist/src/server.d.ts +7 -0
  117. package/dist/src/server.d.ts.map +1 -0
  118. package/dist/src/server.js +76 -0
  119. package/dist/src/server.js.map +1 -0
  120. package/dist/starting-doc/.annotations.json +3 -0
  121. package/dist/starting-doc/.diagrams.json +1884 -0
  122. package/dist/starting-doc/.living-doc.json +39 -0
  123. package/dist/starting-doc/1_tutorial/2026_04_11_13_25_[General]_crer_vos_dossiers.md +16 -0
  124. package/dist/starting-doc/1_tutorial/2026_04_11_18_58_[General]_creer_un_document_dans_un_dossier.md +9 -0
  125. package/dist/starting-doc/1_tutorial/2026_04_12_09_00_[General]_editer_et_sauvegarder.md +39 -0
  126. package/dist/starting-doc/1_tutorial/2026_04_12_10_00_[General]_utiliser_les_snippets.md +71 -0
  127. package/dist/starting-doc/2026_04_08_20_52_[General]_welcome.md +17 -0
  128. package/dist/starting-doc/2026_04_11_12_55_[General]_premiers_pas.md +271 -0
  129. package/dist/starting-doc/2_guide/2026_04_08_00_04_[DOCUMENT]_utilisation_des_images_plein_ecran_lien_clickable.md +40 -0
  130. package/dist/starting-doc/2_guide/2026_04_08_23_38_[Configuration]_demarrage_de_living_documentation.md +32 -0
  131. package/dist/starting-doc/2_guide/2026_04_09_09_00_[NAVIGATION]_recherche_plein_texte.md +65 -0
  132. package/dist/starting-doc/2_guide/2026_04_09_10_00_[EXPORT]_exporter_en_pdf.md +43 -0
  133. package/dist/starting-doc/2_guide/2026_04_09_11_00_[Configuration]_configurer_le_panneau_admin.md +55 -0
  134. package/dist/starting-doc/2_guide/2026_04_09_12_00_[Configuration]_extra_files.md +68 -0
  135. package/dist/starting-doc/2_guide/2026_04_09_13_00_[WORDCLOUD]_word_cloud.md +54 -0
  136. package/dist/starting-doc/2_guide/2026_04_09_14_00_[DIAGRAM]_creer_et_lier_un_diagramme.md +77 -0
  137. package/dist/starting-doc/3_concept/2026_04_08_20_58_[DOCUMENTING]_ADRS.md +20 -0
  138. package/dist/starting-doc/3_concept/2026_04_08_22_15_[DOCUMENTING]_living_documentation.md +17 -0
  139. package/dist/starting-doc/3_concept/2026_04_08_22_46_[METHODOLOGY]_diataxis_architecture_du_contenu.md +16 -0
  140. package/dist/starting-doc/4_reference/2026_04_08_23_14_[FUNDAMENTALS]_the_living_documentation_tool.md +41 -0
  141. package/dist/starting-doc/4_reference/2026_04_09_01_00_[REFERENCE]_raccourcis_clavier.md +61 -0
  142. package/dist/starting-doc/4_reference/2026_04_09_02_00_[REFERENCE]_tokens_pattern_nommage.md +75 -0
  143. package/dist/starting-doc/4_reference/2026_04_09_03_00_[REFERENCE]_types_de_snippets.md +68 -0
  144. package/dist/starting-doc/4_reference/2026_04_11_17_31_[FUNDAMENTALS]_architecturer_une_documentation.md +12 -0
  145. package/dist/starting-doc/4_reference/2026_04_12_14_07_[FUNDAMENTALS]_dossiers_et_catgories.md +89 -0
  146. package/dist/starting-doc/images/admin_screenshot.png +0 -0
  147. package/dist/starting-doc/images/ajout-document.png +0 -0
  148. package/dist/starting-doc/images/ajouter-document-categorie.png +0 -0
  149. package/dist/starting-doc/images/ajouter_un_document_dans_un_dossier.png +0 -0
  150. package/dist/starting-doc/images/architecturer_une_documentation_reference.png +0 -0
  151. package/dist/starting-doc/images/cr_er_un_document.png +0 -0
  152. package/dist/starting-doc/images/creation-nouveau-dossier.png +0 -0
  153. package/dist/starting-doc/images/creer-document-context-engineering.png +0 -0
  154. package/dist/starting-doc/images/creer-dossier-only-tutoriel.png +0 -0
  155. package/dist/starting-doc/images/creer-dossier-tutoriel.png +0 -0
  156. package/dist/starting-doc/images/creer-dossiers-done.png +0 -0
  157. package/dist/starting-doc/images/creer-un-document.png +0 -0
  158. package/dist/starting-doc/images/creer-vos-dossiers-tutoriel.png +0 -0
  159. package/dist/starting-doc/images/creer-vos-dossiers.png +0 -0
  160. package/dist/starting-doc/images/decouverte_adrs.png +0 -0
  161. package/dist/starting-doc/images/diataxis.png +0 -0
  162. package/dist/starting-doc/images/diataxis_callout.png +0 -0
  163. package/dist/starting-doc/images/document-cree.png +0 -0
  164. package/dist/starting-doc/images/liens_snippets.png +0 -0
  165. package/dist/starting-doc/images/living_documentation.png +0 -0
  166. package/dist/starting-doc/images/npm_logo.png +0 -0
  167. package/dist/starting-doc/images/popup-creer-document.png +0 -0
  168. package/dist/starting-doc/images/popup-creer-dossier.png +0 -0
  169. package/dist/starting-doc/images/popup-dossier-cree.png +0 -0
  170. package/dist/starting-doc/images/quatre-dossiers-crees.png +0 -0
  171. package/dist/starting-doc/images/screenshot-living-doc.png +0 -0
  172. package/dist/starting-doc/images/the_living_documentation_tool.png +0 -0
  173. package/package.json +49 -0
@@ -0,0 +1,55 @@
1
+ ## Panneau Admin
2
+
3
+ Le panneau Admin est accessible via le bouton **`⚙ Admin`** dans le header principal. Il permet de configurer Living Documentation sans éditer manuellement le fichier `.living-doc.json`.
4
+
5
+ ---
6
+
7
+ ### Changer le titre de l'application
8
+
9
+ 1. Ouvrez **⚙ Admin**
10
+ 2. Dans le champ **`Title`**, saisissez le nom de votre projet (ex. `Documentation — MonProjet`)
11
+ 3. Cliquez **`Save`**
12
+
13
+ Le titre s'affiche dans l'onglet du navigateur et en haut de la sidebar.
14
+
15
+ ---
16
+
17
+ ### Changer le thème
18
+
19
+ 1. Dans le sélecteur **`Theme`**, choisissez parmi :
20
+ - `system` — suit la préférence système (clair/sombre)
21
+ - `light` — toujours clair
22
+ - `dark` — toujours sombre
23
+ 2. Cliquez **`Save`**
24
+
25
+ > La préférence est aussi accessible depuis le bouton ☀️/🌙 dans le header, qui la persiste en `localStorage`.
26
+
27
+ ---
28
+
29
+ ### Modifier le pattern de nommage des fichiers
30
+
31
+ 1. Dans le champ **`Filename pattern`**, saisissez votre pattern personnalisé.
32
+
33
+ Exemples valides :
34
+ ```
35
+ YYYY_MM_DD_HH_mm_[Category]_title
36
+ [Category]_YYYY_MM_DD_title
37
+ YYYY_MM_DD_[Category]_title
38
+ ```
39
+
40
+ 2. Cliquez **`Save`**
41
+
42
+ **Contrainte** : le pattern doit contenir `[Category]` **exactement une fois**. Un message d'erreur s'affiche sinon.
43
+
44
+ > Pour la liste complète des tokens reconnus, consultez la [référence des tokens](?doc=4_reference%252F2026_04_09_02_00_%255BREFERENCE%255D_tokens_pattern_nommage).
45
+
46
+ ---
47
+
48
+ ### Activer le mode debug des diagrammes
49
+
50
+ 1. Cochez **`Show diagram debug overlay`**
51
+ 2. Cliquez **`Save`**
52
+
53
+ En mode debug, un bouton `dbg` apparaît dans la barre d'outils de l'éditeur de diagramme. Il affiche les coordonnées et dimensions de chaque nœud sous forme d'overlays DOM.
54
+
55
+ Utile pour diagnostiquer des problèmes de positionnement dans les diagrammes.
@@ -0,0 +1,68 @@
1
+ ## Extra Files — inclure des fichiers extérieurs au dossier docs
2
+
3
+ Les **Extra Files** permettent d'ajouter dans Living Documentation des fichiers Markdown qui se trouvent **en dehors** du dossier de documentation principal. Typiquement : `README.md`, `CLAUDE.md`, `CONTRIBUTING.md` à la racine du dépôt.
4
+
5
+ Ces fichiers apparaissent toujours dans la section **General**, avant les documents normaux.
6
+
7
+ ---
8
+
9
+ ### Ajouter un Extra File via le panneau Admin
10
+
11
+ 1. Ouvrez **⚙ Admin**
12
+ 2. Descendez jusqu'à la section **General — Extra Files**
13
+ 3. Utilisez le **navigateur de fichiers intégré** pour parcourir votre système de fichiers
14
+ 4. Naviguez jusqu'au fichier `.md` souhaité et cliquez **`Add`**
15
+ 5. Le fichier apparaît dans la liste des Extra Files
16
+ 6. Cliquez **`Save`**
17
+
18
+ ✅ Le fichier est immédiatement visible dans la sidebar, dans la catégorie General.
19
+
20
+ ---
21
+
22
+ ### Réordonner les Extra Files
23
+
24
+ Dans la liste des Extra Files du panneau Admin, vous pouvez **réordonner** les entrées par glisser-déposer ou via les flèches ↑↓. L'ordre défini est l'ordre d'apparition dans la sidebar.
25
+
26
+ ---
27
+
28
+ ### Supprimer un Extra File
29
+
30
+ Cliquez sur l'icône **🗑** à droite de l'entrée dans la liste, puis **`Save`**.
31
+
32
+ > Cela retire uniquement le fichier de la liste des Extra Files — le fichier sur disque n'est **pas supprimé**.
33
+
34
+ ---
35
+
36
+ ### Cas d'usage typiques
37
+
38
+ ```json
39
+ {
40
+ "extraFiles": [
41
+ "/path/to/project/README.md",
42
+ "/path/to/project/CLAUDE.md",
43
+ "/path/to/project/CONTRIBUTING.md"
44
+ ]
45
+ }
46
+ ```
47
+
48
+ - **README.md** : page d'accueil du projet, visible directement dans la documentation
49
+ - **CLAUDE.md** : instructions pour les agents IA, consultables sans ouvrir un éditeur
50
+ - **CONTRIBUTING.md** : guide de contribution, partagé avec toute l'équipe via la documentation
51
+
52
+ ---
53
+
54
+ ### Configuration manuelle
55
+
56
+ Les Extra Files sont stockés dans `.living-doc.json` sous la clé `extraFiles`. Vous pouvez les éditer directement :
57
+
58
+ ```json
59
+ {
60
+ "extraFiles": [
61
+ "/chemin/absolu/vers/mon_fichier.md"
62
+ ]
63
+ }
64
+ ```
65
+
66
+ **Contraintes :**
67
+ - Les chemins doivent être **absolus** et se terminer par `.md`
68
+ - Les fichiers doivent exister sur le disque au moment du chargement
@@ -0,0 +1,54 @@
1
+ ## Word Cloud — visualiser le vocabulaire dominant
2
+
3
+ Le **Word Cloud** génère un nuage de mots à partir du contenu de n'importe quel dossier de votre système de fichiers. Utile pour identifier les thèmes dominants d'une base de code ou d'une documentation.
4
+
5
+ ---
6
+
7
+ ### Lancer le Word Cloud
8
+
9
+ 1. Cliquez sur **`☁ Word Cloud`** dans le header principal.
10
+
11
+ Un overlay plein écran s'ouvre.
12
+
13
+ 2. Dans le champ **Search root**, saisissez le chemin du dossier à analyser.
14
+
15
+ Vous pouvez aussi cliquer **`Browse`** pour naviguer dans votre système de fichiers et sélectionner un dossier.
16
+
17
+ 3. Cochez les **extensions de fichiers** à inclure dans l'analyse :
18
+
19
+ | Famille | Extensions disponibles |
20
+ |------------|-----------------------------------------------|
21
+ | Docs | `.md`, `.txt` |
22
+ | JS/TS | `.js`, `.ts`, `.jsx`, `.tsx` |
23
+ | JVM | `.java`, `.kt`, `.scala` |
24
+ | Systèmes | `.py`, `.go`, `.rs`, `.cs`, `.swift`, `.rb` |
25
+ | Web | `.html`, `.css` |
26
+ | Config | `.yml`, `.yaml`, `.json` |
27
+
28
+ 4. Cliquez **`Launch`**.
29
+
30
+ Living Documentation scanne récursivement le dossier, lit tous les fichiers correspondants, et génère le nuage de mots.
31
+
32
+ ---
33
+
34
+ ### Filtrage automatique
35
+
36
+ Le Word Cloud applique automatiquement plusieurs filtres pour ne conserver que les mots porteurs de sens :
37
+
38
+ - **Mots vides humains** (EN + FR) : `the`, `and`, `le`, `de`, `avec`, etc.
39
+ - **Mots-clés du langage** : selon les extensions sélectionnées (`function`, `import`, `class`, `return`…)
40
+ - **Lignes d'import/package** : supprimées avant la tokenisation
41
+
42
+ ---
43
+
44
+ ### Persistance
45
+
46
+ Le dossier racine et les extensions sélectionnées sont mémorisés en `localStorage` sous les clés `wc-root` et `wc-exts`. Ils sont rechargés automatiquement à la prochaine ouverture.
47
+
48
+ ---
49
+
50
+ ### Cas d'usage
51
+
52
+ - **Audit d'une documentation** : vérifier que les termes métier apparaissent bien en bonne place
53
+ - **Revue d'une base de code** : détecter les concepts dominants dans un module
54
+ - **Onboarding** : donner à un nouveau développeur une vision rapide du vocabulaire du projet
@@ -0,0 +1,77 @@
1
+ ## Créer un diagramme et le lier à un document
2
+
3
+ L'éditeur de diagrammes est intégré dans Living Documentation. Les diagrammes sont stockés dans le même dossier que vos documents, versionnable avec votre code.
4
+
5
+ ---
6
+
7
+ ### Créer un nouveau diagramme
8
+
9
+ 1. Cliquez sur **`⬡ Diagram`** dans le header principal.
10
+
11
+ L'éditeur de diagramme s'ouvre dans un nouvel onglet (ou dans la même page selon votre navigateur).
12
+
13
+ 2. Dans la liste de diagrammes (panneau gauche), cliquez sur **`+ New diagram`**.
14
+
15
+ 3. Donnez un nom à votre diagramme.
16
+
17
+ 4. Construisez votre diagramme :
18
+ - **Double-clic** sur le canvas → crée un nœud
19
+ - **Glisser** entre deux nœuds → crée une arête
20
+ - **Clic sur un nœud** → sélectionne, affiche le panneau de formatage
21
+ - **Double-clic sur un nœud** → édite le label
22
+
23
+ 5. Cliquez **`💾 Save`** (ou `Cmd/Ctrl+S`).
24
+
25
+ Le diagramme est sauvegardé sous forme JSON dans `DOCS_FOLDER/.diagrams/`.
26
+
27
+ ---
28
+
29
+ ### Exporter le diagramme en PNG
30
+
31
+ 1. Depuis l'éditeur, cliquez **`📷 Export PNG`**.
32
+
33
+ Une image PNG du canvas est générée et sauvegardée dans `DOCS_FOLDER/images/`.
34
+
35
+ 2. Notez le nom du fichier généré (ex. `diagram-d1234567890.png`).
36
+
37
+ ---
38
+
39
+ ### Lier le diagramme à un document
40
+
41
+ Une fois le PNG exporté, insérez-le dans votre document Markdown en tant qu'image cliquable pointant vers l'éditeur de diagramme.
42
+
43
+ **En mode édition**, utilisez le snippet **`Lien vers un diagramme`** :
44
+
45
+ 1. Ouvrez le document cible en mode édition
46
+ 2. Cliquez **`🧩 Snippets`** → **`Lien vers un diagramme`**
47
+ 3. Renseignez :
48
+ - L'URL de l'image PNG (`./images/diagram-d1234567890.png`)
49
+ - L'ID du diagramme (visible dans l'URL de l'éditeur : `/diagram?id=d1234567890`)
50
+ 4. Cliquez **`Insérer`**
51
+
52
+ Ou directement en Markdown :
53
+
54
+ ```markdown
55
+ [![Mon diagramme](./images/diagram-d1234567890.png)](/diagram?id=d1234567890)
56
+ ```
57
+
58
+ ✅ Dans l'article, un clic sur l'image ouvre l'éditeur de diagramme.
59
+ `Shift+Clic` sur l'image l'affiche en plein écran.
60
+
61
+ ---
62
+
63
+ ### Deep-link vers un diagramme spécifique
64
+
65
+ Vous pouvez créer un lien direct vers un diagramme depuis n'importe quel document :
66
+
67
+ ```markdown
68
+ [Voir le diagramme d'architecture](/diagram?id=d1234567890)
69
+ ```
70
+
71
+ Au chargement de l'éditeur, le diagramme correspondant est ouvert automatiquement.
72
+
73
+ ---
74
+
75
+ ### Bouton ← Retour
76
+
77
+ Le bouton **`← Back`** dans l'éditeur de diagramme appelle `history.back()` et retourne à la page qui a ouvert le diagramme (généralement l'article qui contient l'image).
@@ -0,0 +1,20 @@
1
+
2
+ ## Les ADR : une bonne idée, des limites réelles
3
+
4
+ Les **Architecture Decision Records**, ces petits documents Markdown versionnés dans le dépôt, au plus près du code, sont une des meilleures pratiques que j'aie adoptées dans ma longue carrière de développeur et elle le reste encore aujourd'hui.<br/>
5
+ Pas besoin d'outil externe, pas de synchronisation à gérer, l'historique des décisions **vit** avec le code.
6
+
7
+ Mais certains problèmes subsistent :
8
+
9
+ - Les **diagrammes** : l'ADR affiche un beau PNG généré depuis un outil visuel (parce que mermaid ca va un moment !!)<br/>
10
+ Mais le fichier source du diagramme a disparu depuis longtemps ➔ Le PNG ne sera jamais mis à jour ➔ Documentation obsolete ➔ C'est dommage car moi perso je suis un visuel
11
+ - L'**ordre** des ADRs : laborieux à maintenir, des dossiers, des sous-dossiers, des conventions *superseded / not superseded*, tout ca tiens mal dans la durée.
12
+ - Les **markdowns** : C'est bien mais les outils pour les visualiser sont plutôt limités et pas très pratiques.
13
+
14
+ ---
15
+
16
+ <h2 style="text-align:center">➠ Vers un meilleur type de partage de connaissance</h2>
17
+
18
+ [![Living Documentation](./images/living_documentation.png)](?doc=3_concept%252F2026_04_08_22_15_%255BDOCUMENTING%255D_living_documentation)
19
+
20
+ <h1 style="text-align:center"><code>CLIC sur l'image pour naviguer 😉</code></h1>
@@ -0,0 +1,17 @@
1
+ ## La documentation qui vit avec le code
2
+
3
+ La formation que j'ai eu l'occasion de suivre et le livre de **Cyrille Martraire** <a href="https://www.amazon.fr/Living-Documentation-Cyrille-Martraire/dp/0134689321" target="_blank">*Living Documentation*, Addison-Wesley</a> ont cristallisé quelque chose d'essentiel : la documentation traditionnelle est périmée dès qu'elle est écrite, parce qu'elle est séparée de ce qu'elle décrit.
4
+
5
+ Son principe directeur :
6
+
7
+ > Chaque connaissance doit avoir **une source unique faisant autorité**, et tout le reste doit en découler automatiquement. Ce qui ne peut pas être automatisé doit être traité comme du code, versionné, revu, maintenu activement.
8
+
9
+ S'il s'appuie sur le Domain-Driven Design pour que le code *soit* lui-même de la documentation, il pose une question plus large : comment faire en sorte que la documentation reste vivante, fiable, et qu'elle coûte le moins possible à maintenir ?
10
+
11
+ De surcroît avec les LLM et les agents IA actuels (je fais déjà écrire mes ADRS par un `skills CLAUDE`), cette notion de documentation vivante est un sujet auquel j'accorde beaucoup d'importance.
12
+
13
+ ---
14
+
15
+ [![Diataxis](./images/diataxis_callout.png)](?doc=3_concept%252F2026_04_08_22_46_%255BMETHODOLOGY%255D_diataxis_architecture_du_contenu)
16
+
17
+ <h1 style="text-align:center"><code>CLIC sur l'image pour naviguer 😉</code></h1>
@@ -0,0 +1,16 @@
1
+
2
+ ## Diátaxis — l'architecture du contenu
3
+
4
+ La méthode <a href="https://diataxis.fr/" target="_blank">**Diátaxis**</a> répond à une question différente de celle de [`Living Documentation`](?doc=3_concept%252F2026_04_08_22_15_%255BDOCUMENTING%255D_living_documentation) mais néanmoins complémentaire : non pas *comment maintenir* la documentation, mais *comment la structurer* pour qu'elle serve vraiment.
5
+
6
+ Sa réponse tient en une règle : **un document, une seule orientation**.
7
+
8
+ Un tutoriel n'est pas un guide de référence, une explication n'est pas un how-to.
9
+
10
+ Mélanger les genres, c'est produire des documents qui ne servent personne complètement.
11
+
12
+ ![Diataxis](./images/diataxis.png)
13
+
14
+ L'outil **Living Documentation** est agnotique de toute méthodologie, vous pouvez le moduler à votre guise, toutefois personnellement je recommande l'approche **Diataxis** car c'est celle que j'utilise depuis un certain temps et qui je trouve fonctionne le mieux pour documenter les projets sur lesquels je travaille.
15
+
16
+ Cet exemple introductif en est également une démonstration aussi ouvrons sans plus tarder le premier document de référence de ce bel outil qu'est [`Living Documentation`](?doc=4_reference%252F2026_04_08_23_14_%255BFUNDAMENTALS%255D_the_living_documentation_tool)
@@ -0,0 +1,41 @@
1
+ ## Ce que cet outil propose
2
+
3
+ L'outil `Living Documentation` est un outil low footprint, opensource, ne necessitant ni abonnement, ni installation complexe, ni SAAS dédié, ni puissance de calcul massive, rien de tout cela.
4
+
5
+ C'est un outil installé localement sur n'importe lequel de vos projets et qui nécessite simplement de disposer de **NodeJS** sur sa machine.
6
+
7
+ Lancez l'outil en pointant vers votre dossier de documentation, le mieux étant de versionner ce dossier au sein de votre projet :
8
+
9
+ ```bash
10
+ npx living-documentation ./docs
11
+ ```
12
+
13
+ Pour plus d'information consulter le [`Guide de démarrage`](?doc=2_guide%252F2026_04_08_23_38_%255BConfiguration%255D_demarrage_de_living_documentation)
14
+
15
+ ---
16
+
17
+ ## Vue d'ensemble de l'outil
18
+
19
+ <h2 style="text-align:center"><code>SHIFT+CLIC sur l'image pour l'agrandir 😉</code></h2>
20
+ <h2 style="text-align:center"><code>CLIC sur l'image pour accéder au diagamme en modification 😲</code></h2>
21
+
22
+ [![The Living Documentation Tool](./images/the_living_documentation_tool.png)](/diagram?id=d1775684671412)
23
+
24
+ - **Garder la documentation dans le dépôt**, en Markdown, versionnée avec le code, sans dépendance externe
25
+ - **Résoudre le problème des diagrammes** avec un éditeur intégré dont la source est stockée dans le même dossier que les documents
26
+ - **Rendre la navigation agréable** sans avoir à ouvrir GitHub ou un éditeur de code
27
+ - **Laisser la structure émerger naturellement** à partir des noms de fichiers et de l'arborescence, sans contraintes, sans base de données, sans synchronisation, sans état à gérer
28
+ - **Encourager Diátaxis** ça c'est ce que moi je vous recommande, mais libre à vous de m'écouter ou non
29
+
30
+ L'outil ne remplace pas :
31
+
32
+ - la méthodologie (Ex. Diataxis Again 😉)
33
+ - la discipline d'écriture (Mais un mode MCP arrive bientôt 🤩)
34
+
35
+ Mais il essaie de supprimer les **frictions** qui font qu'on finit par **ne plus écrire du tout** et propose une approche novatrice basée sur la reclecture et l'IA pour **détecter** et **corriger** les parties obsolètes d'une documentation !
36
+
37
+ > Comme j'adore la méthode Diàtaxis, je vous propose d'aller explorer les Tutoriels et les Guides pour en apprendre davantage sur living-documentation
38
+ >
39
+ > Pour commencer, c'est par [ici](?doc=2026_04_11_12_55_%255BGeneral%255D_premiers_pas)
40
+ >
41
+ > — Youssef MEDAGHRI-ALAOUI (Concepteur de Living Documentation)
@@ -0,0 +1,61 @@
1
+ ## Raccourcis clavier
2
+
3
+ ### Visionneuse principale (`/`)
4
+
5
+ | Raccourci | Action |
6
+ |----------------------|-------------------------------------------|
7
+ | `Cmd/Ctrl + S` | Sauvegarder le document en cours d'édition |
8
+ | `Escape` | Quitter le mode édition (= Cancel) |
9
+ | `Cmd/Ctrl + V` | En mode édition avec image dans le presse-papiers : coller et uploader l'image |
10
+
11
+ ---
12
+
13
+ ### Éditeur de diagramme (`/diagram`)
14
+
15
+ #### Général
16
+
17
+ | Raccourci | Action |
18
+ |----------------------|-------------------------------------------|
19
+ | `Cmd/Ctrl + S` | Sauvegarder le diagramme |
20
+ | `Cmd/Ctrl + Z` | Annuler (Undo) |
21
+ | `Cmd/Ctrl + Shift + Z` | Rétablir (Redo) |
22
+ | `Cmd/Ctrl + C` | Copier les nœuds sélectionnés |
23
+ | `Cmd/Ctrl + V` | Coller les nœuds (avec remapping des IDs) |
24
+ | `Delete` / `Backspace` | Supprimer les nœuds/arêtes sélectionnés |
25
+ | `Escape` | Désélectionner tout |
26
+
27
+ #### Navigation canvas
28
+
29
+ | Raccourci | Action |
30
+ |----------------------|-------------------------------------------|
31
+ | `+` / `-` | Zoom avant / arrière |
32
+ | `0` | Réinitialiser le zoom (fit to screen) |
33
+ | `Molette` | Zoom centré sur le curseur |
34
+ | `Clic + Drag` (canvas) | Déplacer la vue |
35
+
36
+ #### Nœuds
37
+
38
+ | Raccourci | Action |
39
+ |----------------------------------|-------------------------------------------|
40
+ | `Double-clic` (canvas vide) | Créer un nœud |
41
+ | `Double-clic` (nœud) | Éditer le label du nœud |
42
+ | `Clic` (nœud) | Sélectionner |
43
+ | `Shift + Clic` (nœud) | Ajouter à la sélection |
44
+ | `Drag` (nœud) | Déplacer |
45
+ | `Drag` (handle de coin) | Redimensionner |
46
+
47
+ #### Arêtes
48
+
49
+ | Raccourci | Action |
50
+ |----------------------------------|-------------------------------------------|
51
+ | `Drag` (nœud source → nœud cible) | Créer une arête |
52
+ | `Double-clic` (arête) | Éditer le label de l'arête |
53
+
54
+ ---
55
+
56
+ ### Images dans les articles
57
+
58
+ | Raccourci | Action |
59
+ |----------------------|-------------------------------------------|
60
+ | `Shift + Clic` | Afficher l'image en plein écran (overlay) |
61
+ | `Clic` sur une image liée | Naviguer vers la destination (document, diagramme, URL externe) |
@@ -0,0 +1,75 @@
1
+ ## Tokens du pattern de nommage
2
+
3
+ Le pattern de nommage des fichiers est configurable via **⚙ Admin** → champ *Filename pattern*. Il détermine comment Living Documentation extrait la date, la catégorie et le titre depuis le nom du fichier.
4
+
5
+ ---
6
+
7
+ ### Tokens reconnus
8
+
9
+ | Token | Description | Exemple dans le nom de fichier | Valeur parsée |
10
+ |--------------|--------------------------------------|-------------------------------|---------------------|
11
+ | `YYYY` | Année sur 4 chiffres | `2024` | 2024 |
12
+ | `MM` | Mois sur 2 chiffres (01–12) | `03` | Mars |
13
+ | `DD` | Jour sur 2 chiffres (01–31) | `15` | 15 |
14
+ | `HH` | Heure sur 2 chiffres (00–23) | `14` | 14 |
15
+ | `mm` | Minutes sur 2 chiffres (00–59) | `30` | 30 |
16
+ | `[Category]` | Catégorie entre crochets | `[Architecture]` | Architecture |
17
+ | *(reste)* | Tout le reste forme le titre | `choix_base_de_donnees` | Choix Base De Donnees |
18
+
19
+ ---
20
+
21
+ ### Pattern par défaut
22
+
23
+ ```
24
+ YYYY_MM_DD_HH_mm_[Category]_title
25
+ ```
26
+
27
+ Exemple complet :
28
+
29
+ ```
30
+ 2024_03_15_14_30_[Architecture]_choix_base_de_donnees.md
31
+ ```
32
+
33
+ | Extrait | Valeur |
34
+ |--------------|-------------------------|
35
+ | Date | 15 mars 2024, 14:30 |
36
+ | Catégorie | Architecture |
37
+ | Titre | Choix Base De Donnees |
38
+
39
+ ---
40
+
41
+ ### Patterns alternatifs valides
42
+
43
+ L'ordre des tokens est respecté. Exemples :
44
+
45
+ ```
46
+ [Category]_YYYY_MM_DD_title
47
+ YYYY_MM_DD_[Category]_title
48
+ YYYY_MM_DD_HH_mm_[Category]_title ← par défaut
49
+ ```
50
+
51
+ **Contrainte obligatoire** : `[Category]` doit apparaître **exactement une fois**. Un pattern sans `[Category]` ou avec deux occurrences est rejeté (erreur 400).
52
+
53
+ ---
54
+
55
+ ### Stratégies de fallback du parser
56
+
57
+ Le parser essaie trois stratégies dans l'ordre, de la plus complète à la plus permissive :
58
+
59
+ 1. **Full match** — date + catégorie présents → extrait date, catégorie, titre
60
+ 2. **Date-only** — date présente, pas de catégorie → catégorie = `General`, titre extrait du reste
61
+ 3. **Fallback total** — rien ne correspond → titre = nom du fichier, catégorie = `General`, date = null
62
+
63
+ Les fichiers qui ne suivent pas du tout le pattern sont quand même affichés sous **General**.
64
+
65
+ ---
66
+
67
+ ### Séparateur
68
+
69
+ Le séparateur entre les tokens est le `_` (underscore). Le titre peut donc lui-même contenir des underscores — tout ce qui est après le dernier token reconnu forme le titre.
70
+
71
+ ---
72
+
73
+ ### Tri des documents
74
+
75
+ Les documents sont triés par **nom de fichier complet** en ordre alphabétique ascendant (`localeCompare`) au sein de chaque catégorie. Le préfixe de date (`YYYY_MM_DD`) garantit donc un tri chronologique si le pattern est respecté.
@@ -0,0 +1,68 @@
1
+ ## Types de snippets disponibles
2
+
3
+ Les snippets sont accessibles en mode édition via le bouton **`🧩 Snippets`**. Voici la liste exhaustive.
4
+
5
+ ---
6
+
7
+ ### Snippets simples
8
+
9
+ | Snippet | Description | Markdown généré (exemple) |
10
+ |----------------------------|----------------------------------------------------------|----------------------------------------------------------------|
11
+ | **Bloc dépliable** | Bloc `<details>` avec titre et contenu masqué par défaut | `<details><summary>Titre</summary>\n\nContenu\n</details>` |
12
+ | **Lien** | Lien Markdown standard vers une URL | `[Texte](https://exemple.com)` |
13
+ | **Lien vers un document** | Lien vers un autre document Living Documentation | `[Texte](?doc=<id_encodé>)` |
14
+ | **Lien d'ancre** | Lien vers une section du document courant | `[Texte](#titre-de-section)` |
15
+ | **Lien d'ancre (autre doc)** | Lien vers une section d'un autre document | `[Texte](?doc=<id_encodé>#titre)` |
16
+ | **Lien vers un diagramme** | Image cliquable ouvrant l'éditeur de diagramme | `[![Alt](./images/img.png)](/diagram?id=<id>)` |
17
+ | **Image** | Image Markdown simple | `![Alt](./images/img.png)` |
18
+ | **Bloc de code** | Bloc de code avec langage | ` ```langage\ncode\n``` ` |
19
+ | **Citation** | Bloc blockquote | `> Texte de la citation` |
20
+ | **Séparateur** | Ligne horizontale | `---` |
21
+ | **Liste numérotée** | Liste ordonnée à 3 niveaux d'imbrication | `1. item\n 1. sous-item\n 1. sous-sous-item` |
22
+ | **Liste à puces** | Liste non ordonnée à 3 niveaux d'imbrication | `- item\n - sous-item\n - sous-sous-item` |
23
+
24
+ ---
25
+
26
+ ### Snippets complexes
27
+
28
+ #### Tableau (éditeur dynamique)
29
+
30
+ Ouvre une grille interactive dans le panneau Snippets.
31
+
32
+ - Définissez le nombre de colonnes et de lignes
33
+ - Remplissez les cellules dans l'interface
34
+ - Génère un tableau Markdown correctement aligné
35
+
36
+ ```markdown
37
+ | Col 1 | Col 2 | Col 3 |
38
+ |--------|--------|--------|
39
+ | val 1 | val 2 | val 3 |
40
+ ```
41
+
42
+ #### Arbre ASCII (éditeur d'indentation)
43
+
44
+ Ouvre un éditeur textuel basé sur l'indentation.
45
+
46
+ - Saisissez les nœuds de l'arbre, un par ligne
47
+ - L'indentation (espaces ou tab) définit la hiérarchie
48
+ - Génère un bloc de code `text` avec les connecteurs `├──` / `└──`
49
+
50
+ ```text
51
+ racine/
52
+ ├── dossier-a/
53
+ │ ├── fichier-1.md
54
+ │ └── fichier-2.md
55
+ └── dossier-b/
56
+ └── fichier-3.md
57
+ ```
58
+
59
+ ---
60
+
61
+ ### Mode détection
62
+
63
+ Si vous **sélectionnez** du texte dans le textarea avant d'ouvrir le panneau Snippets, l'outil tente de reconnaître le type de snippet :
64
+
65
+ - **Message vert** : snippet reconnu, champs pré-remplis → modifiez et réinsérez
66
+ - **Message orange** : sélection non reconnue, panneau vide → créez un nouveau snippet
67
+
68
+ Snippets détectables : bloc dépliable, lien, image, image liée, bloc de code, citation, tableau, liste.
@@ -0,0 +1,12 @@
1
+ Il existe plusieurs approches pour organiser une documentation : par équipe, par produit, par date, par type de contenu…, chacune ayant ses avantages.
2
+ [![Architecturer Une Documentation (Reference)](./images/architecturer_une_documentation_reference.png)](/diagram?id=d1775924007206)
3
+
4
+ Personnellement j'utilise l'approche `Dàtaxis` que je trouve excellente pour structurer de documentations.<br/>
5
+ Et je trouve que cela donne d'excellents résultats que ce soit chez mes clients, ou sur mes projets open source personnels.
6
+
7
+ `Diataxis` distingue quatre types de contenus, chacun dans son dossier :
8
+
9
+ - **1_tutorial** — des guides pas à pas pour apprendre en faisant (comme celui-ci)
10
+ - **2_guide** — des recettes orientées tâche : "comment faire X ?"
11
+ - **3_concept** — des explications pour comprendre le pourquoi et le comment
12
+ - **4_reference** — des descriptions factuelles et exhaustives (API, config, glossaire)
@@ -0,0 +1,89 @@
1
+ # Dossiers et Catégories
2
+
3
+ Dans Living Documentation, deux notions distinctes structurent la barre latérale : les **dossiers** et les **catégories**. Elles ne sont pas interchangeables.
4
+
5
+ ---
6
+
7
+ ## Les dossiers
8
+
9
+ Un dossier correspond directement à un **répertoire sur le système de fichiers**.
10
+
11
+ Living Documentation scanne le dossier de documentation de façon récursive. Chaque sous-répertoire devient un nœud collapsible dans la sidebar.
12
+
13
+ ```
14
+ docs/
15
+ ├── adrs/ → dossier "Adrs" dans la sidebar
16
+ │ └── tests/ → sous-dossier "Tests" (imbriqué)
17
+ ├── guides/ → dossier "Guides" dans la sidebar
18
+ └── mon_doc.md → document à la racine (pas de dossier)
19
+ ```
20
+
21
+ **Règles :**
22
+ - Les noms de dossiers sont affichés en *title case* (`adrs` → `Adrs`)
23
+ - Un préfixe numérique (`1_`, `2_`, …) contrôle l'ordre d'affichage et est **masqué** dans l'interface (visible uniquement dans le tooltip au survol)
24
+ - L'imbrication est illimitée
25
+
26
+ ---
27
+
28
+ ## Les catégories
29
+
30
+ Une catégorie est extraite du **nom du fichier**, via le token `[Category]` du pattern de nommage.
31
+
32
+ ```
33
+ 2024_01_15_10_00_[Architecture]_choix_bdd.md
34
+ ^^^^^^^^^^^^^^
35
+ catégorie = "Architecture"
36
+ ```
37
+
38
+ La catégorie est indépendante du dossier dans lequel le fichier se trouve. Un fichier `adrs/2024_01_15_[Architecture]_choix.md` appartient au dossier `Adrs` **et** à la catégorie `Architecture`.
39
+
40
+ **Règles :**
41
+ - Si le fichier ne contient pas de `[Category]`, il tombe dans la catégorie **General**
42
+ - Les fichiers Extra Files sont toujours placés dans **General**
43
+ - La catégorie **General** apparaît toujours en premier, à chaque niveau
44
+
45
+ ---
46
+
47
+ ## Comment la sidebar combine les deux
48
+
49
+ À chaque niveau de l'arborescence, la sidebar affiche dans cet ordre :
50
+
51
+ 1. **General** (catégorie, toujours en tête)
52
+ 2. **Sous-dossiers** (triés alphabétiquement, ou par préfixe numérique)
53
+ 3. **Autres catégories** (triées alphabétiquement)
54
+
55
+ Exemple concret :
56
+
57
+ ```
58
+ docs/
59
+ ├── getting-started/
60
+ │ ├── 2024_01_[Tutoriel]_premiers_pas.md
61
+ │ └── 2024_01_[Tutoriel]_installation.md
62
+ ├── 2024_02_[Architecture]_choix_bdd.md
63
+ └── README.md ← extra file (General)
64
+ ```
65
+
66
+ Sidebar générée :
67
+
68
+ ```
69
+ 📂 (racine)
70
+ ├── General
71
+ │ └── README.md
72
+ ├── Getting-Started
73
+ │ └── Tutoriel
74
+ │ ├── Premiers Pas
75
+ │ └── Installation
76
+ └── Architecture
77
+ └── Choix Bdd
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Récapitulatif
83
+
84
+ | Notion | Source | Contrôle | Affiché dans |
85
+ |------------|----------------------------|---------------------------------|----------------------|
86
+ | Dossier | Répertoire système de fichiers | Nom du répertoire (+ préfixe numérique) | Nœud collapsible dans la sidebar |
87
+ | Catégorie | Token `[Category]` dans le nom de fichier | Pattern de nommage configurable | Groupe sous chaque dossier |
88
+
89
+ > Pour modifier le pattern de nommage, allez dans **⚙ Admin** → champ *Filename pattern*.