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,39 @@
1
+ {
2
+ "docsFolder": "/Users/ymedaghri/Documents/Repositories/Medaghri-Alaoui-Repositories/09_My_Published_Projects/living-documentation/starting-doc",
3
+ "filenamePattern": "YYYY_MM_DD_HH_mm_[Category]_title",
4
+ "title": "Living Documentation",
5
+ "theme": "system",
6
+ "language": "fr",
7
+ "port": 4321,
8
+ "extraFiles": [],
9
+ "showDiagramDebug": false,
10
+ "diagramNodePalette": [
11
+ "#ffffff",
12
+ "#f5f5f4",
13
+ "#f1f5f9",
14
+ "#dbeafe",
15
+ "#e0f2fe",
16
+ "#cffafe",
17
+ "#ccfbf1",
18
+ "#dcfce7",
19
+ "#ecfccb",
20
+ "#fef9c3",
21
+ "#ffedd5",
22
+ "#fee2e2",
23
+ "#ffe4e6",
24
+ "#fce7f3",
25
+ "#ede9fe"
26
+ ],
27
+ "diagramEdgePalette": [
28
+ "#ffffff",
29
+ "#a8a29e",
30
+ "#374151",
31
+ "#3b82f6",
32
+ "#14b8a6",
33
+ "#22c55e",
34
+ "#f97316",
35
+ "#ef4444",
36
+ "#a855f7"
37
+ ],
38
+ "sourceRoot": "/Users/ymedaghri/Documents/Repositories/Medaghri-Alaoui-Repositories/09_My_Published_Projects/living-documentation"
39
+ }
@@ -0,0 +1,16 @@
1
+ ## Introduction
2
+
3
+ Les dossiers constituent l'architecture de votre documentation.<br/>
4
+ Cette architecture doit répondre à une question simple : **où cherchera-t-on cette information dans six mois ?**<br/>
5
+ Pour en savoir plus sur les façons d'architecturer votre documentation, [suivez ce lien](?doc=4_reference%252F2026_04_11_17_31_%255BFUNDAMENTALS%255D_architecturer_une_documentation)
6
+
7
+ ## Passons à la pratique
8
+
9
+ 1. Dans un nouveau projet, vous pouvez créer des dossiers avec le bouton correspondant en haut, dans le Menu latéral de gauche.<br/>
10
+ `Shift+CLIC pour agrandir l'image`
11
+
12
+ [![Créer Vos Dossiers (Tutoriel)](https://images.unsplash.com/photo-1472190649224-495422e1b602?q=80&w=1471&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D)](/diagram?id=d1775917727566)
13
+
14
+ 2. Créer un second dossier **2_GUIDE** puis **3_CONCEPT** et enfin **4_REFERENCE**<br/>
15
+ 💡 Vos dossier apparaissent ordonnée car ils utilisent un **préfix** "1_", "2_", "3_", ..., mais ce dernier est invisible en affichage
16
+ ![image](./images/quatre-dossiers-crees.png)
@@ -0,0 +1,9 @@
1
+ 1. Créer un document
2
+ [![Créer un document](./images/cr_er_un_document.png)](/diagram?id=d1776024969304)
3
+
4
+ 2. Créer un document dans un dossier contenant déjà un document
5
+ <br/>Pour cela sélectionnez d'abord **un document existant dans le Menu latéral de gauche** puis cliquez sur le bouton en haut.<br/>
6
+ Vous constaterez que les champs `Category`et `Location` sont **préremplis**, vous pouvez ainsi facilement et rapidement ajouter un ensemble de documents dans un dossier et/ou une catégorie donnés.<br/>
7
+ Pour en savoir plus sur les notions de **dossiers** et de **catégories**, [suivez ce lien](?doc=4_reference%252F2026_04_12_14_07_%255BFUNDAMENTALS%255D_dossiers_et_catgories)
8
+
9
+ [![Ajouter Un Document Dans Un Dossier](./images/ajouter_un_document_dans_un_dossier.png)](/diagram?id=d1775937972731)
@@ -0,0 +1,39 @@
1
+ ## Introduction
2
+
3
+ Living Documentation vous permet d'éditer vos fichiers Markdown directement dans le navigateur, sans quitter l'outil ni ouvrir un éditeur de code. Les modifications sont sauvegardées sur disque instantanément.
4
+
5
+ ## Passons à la pratique
6
+
7
+ 1. **Ouvrez n'importe quel document** dans la barre latérale gauche.
8
+
9
+ 2. **Cliquez sur le bouton `Edit`** dans le header de l'article (en haut à droite du contenu).
10
+
11
+ Le document bascule en mode édition : un `<textarea>` remplace le rendu HTML. Vous voyez le Markdown brut.
12
+
13
+ 3. **Modifiez le texte.** Par exemple, ajoutez une ligne à la fin :
14
+
15
+ ```markdown
16
+ Voici ma première modification !
17
+ ```
18
+
19
+ 4. **Cliquez sur `Save`.**
20
+
21
+ Le document est sauvegardé sur disque et re-rendu immédiatement, sans rechargement de page.
22
+
23
+ ✅ Votre modification est visible et persistée dans le fichier `.md` sur le disque.
24
+
25
+ 5. **Pour annuler sans sauvegarder**, cliquez sur `Cancel` — le document revient à son état d'origine.
26
+
27
+ ---
28
+
29
+ ## Astuce — coller une image
30
+
31
+ En mode édition, vous pouvez coller une image directement depuis le presse-papiers :
32
+
33
+ 1. Copiez une image (capture d'écran, image depuis un navigateur…)
34
+ 2. Placez le curseur à l'endroit souhaité dans le textarea
35
+ 3. Faites `Cmd+V` (Mac) ou `Ctrl+V` (Windows/Linux)
36
+
37
+ Un placeholder `![image](uploading...)` apparaît immédiatement, puis est remplacé par le lien définitif une fois l'upload terminé.
38
+
39
+ > L'image est sauvegardée dans `DOCS_FOLDER/images/` avec un nom généré automatiquement.
@@ -0,0 +1,71 @@
1
+ ## Introduction
2
+
3
+ Les **snippets** sont des modèles Markdown prêts à l'emploi que vous insérez au curseur en un clic. Ils évitent de taper à la main les syntaxes complexes (tableaux, blocs dépliables, arbres ASCII…).
4
+
5
+ ## Prérequis
6
+
7
+ Être en mode **édition** sur un document. Si ce n'est pas le cas, [éditez d'abord un document](?doc=1_tutorial%252F2026_04_12_09_00_%255BGeneral%255D_editer_et_sauvegarder).
8
+
9
+ ## Passons à la pratique
10
+
11
+ ### Insérer un snippet simple
12
+
13
+ 1. En mode édition, **positionnez votre curseur** à l'endroit où vous voulez insérer le snippet.
14
+
15
+ 2. **Cliquez sur `🧩 Snippets`** dans la barre d'outils de l'éditeur.
16
+
17
+ Un panneau s'ouvre à droite avec la liste des snippets disponibles.
18
+
19
+ 3. Choisissez **`Bloc dépliable`** (`<details>`).
20
+
21
+ Des champs apparaissent : *Titre du bloc* et *Contenu*.
22
+
23
+ 4. Remplissez :
24
+ - Titre : `Voir les détails`
25
+ - Contenu : `Voici le contenu caché.`
26
+
27
+ 5. Cliquez sur **`Insérer`**.
28
+
29
+ ✅ Le snippet est inséré au curseur :
30
+
31
+ ```markdown
32
+ <details><summary>Voir les détails</summary>
33
+
34
+ Voici le contenu caché.
35
+ </details>
36
+ ```
37
+
38
+ ---
39
+
40
+ ### Insérer un tableau avec l'éditeur de tableau
41
+
42
+ 1. Cliquez sur **`🧩 Snippets`** → choisissez **`Tableau`**.
43
+
44
+ 2. Définissez le nombre de colonnes (ex. 3) et de lignes (ex. 2).
45
+
46
+ 3. Remplissez les cellules dans la grille interactive.
47
+
48
+ 4. Cliquez **`Insérer`**.
49
+
50
+ ✅ Un tableau Markdown aligné est généré :
51
+
52
+ ```markdown
53
+ | Colonne 1 | Colonne 2 | Colonne 3 |
54
+ |-----------|-----------|-----------|
55
+ | val 1 | val 2 | val 3 |
56
+ | val 4 | val 5 | val 6 |
57
+ ```
58
+
59
+ ---
60
+
61
+ ### Mode détection — modifier un snippet existant
62
+
63
+ 1. **Sélectionnez** dans le textarea un snippet déjà présent (par exemple, un bloc `<details>…</details>` entier).
64
+
65
+ 2. **Cliquez sur `🧩 Snippets`**.
66
+
67
+ Si le snippet est reconnu, un message vert s'affiche et les champs sont **pré-remplis** avec les valeurs existantes.
68
+
69
+ 3. Modifiez les champs, puis cliquez **`Insérer`** pour remplacer la sélection.
70
+
71
+ > Si la sélection n'est pas reconnue, un message orange l'indique et le panneau reste vide.
@@ -0,0 +1,17 @@
1
+ # Living Documentation — Guide d'utilisation
2
+
3
+ > La documentation est un problème que presque tout le monde a résolu en faisant semblant de l'avoir résolu.
4
+ >
5
+ > — Nobody
6
+
7
+ Des README squelettiques, des outils documentaires tels que Notion et Confluence devenant des forêts vierges où personne ne rentre plus, où on passe du temps à faire un `Ctrl+F` global sur tous les espaces pour finalement ne rien trouver, ou pire, trouver quelque chose d'obsolète mais on va faire avec.
8
+
9
+ Au bout d'un moment, on n'y va plus du tout, et la connaissance redevient individuelle.
10
+
11
+ Ca en arrange certains ? Pas moi !
12
+
13
+ # Pourtant certaines approches ont prouvé leur valeur
14
+
15
+ [![Découvrons les ADRs](./images/decouverte_adrs.png)](?doc=3_concept%252F2026_04_08_20_58_%255BDOCUMENTING%255D_ADRS)
16
+
17
+ <h1 style="text-align:center"><code>CLIC sur l'image pour naviguer 😉</code></h1>
@@ -0,0 +1,271 @@
1
+ Pour vos premiers pas avec l'outil je vous recommande de suivre les différents tutoriels que vous trouverez listés dans le tableau ci-après.
2
+
3
+ Pour la réalisation de ces tutoriels je vous recommande également :
4
+ - Soit de lancer une nouvelle instance d'un projet vide **(à l'aide de la commande ic-dessous)** et de l'ouvrir **ensuite** dans un <a href="http://localhost:1234/" target="_blank">un nouvel onglet</a>, ce qui rendra la réalisation des tutoriels plus pratique
5
+ ```bash
6
+ npx living-documentation -p 1234 ./votre-dossier-pour-pratiquer
7
+ ```
8
+ - Soit d'utiliser le projet **actuel** `living-documentation` de `démo` mais néanmoins d'ouvrir <a href="/" target="_blank">un nouvel onglet</a> pour y réaliser vos tutoriels, ce qui rendra la réalisation des tutoriels plus pratique
9
+
10
+ ## Tutoriels disponibles
11
+
12
+ | Tutoriels | Description |
13
+ | --------- | --------- |
14
+ | [Créez vos dossiers](?doc=1_tutorial%252F2026_04_11_13_25_%255BGeneral%255D_crer_vos_dossiers) | Apprenez à créer et à structurer vos dossiers |
15
+ | [Créer un document dans un dossier](?doc=1_tutorial%252F2026_04_11_18_58_%255BGeneral%255D_creer_un_document_dans_un_dossier) | Comment ajouter un document à un dossier existant |
16
+ | [Éditer et sauvegarder un document](?doc=1_tutorial%252F2026_04_12_09_00_%255BGeneral%255D_editer_et_sauvegarder) | Modifier le contenu d'un document directement dans le navigateur |
17
+ | [Utiliser les snippets](?doc=1_tutorial%252F2026_04_12_10_00_%255BGeneral%255D_utiliser_les_snippets) | Insérer des modèles Markdown prêts à l'emploi (tableaux, blocs, arbres…) |
18
+
19
+ ## Manuel d'utilisation
20
+
21
+
22
+
23
+ ## Convention de nommage des fichiers
24
+
25
+ Les fichiers Markdown doivent suivre ce pattern par défaut :
26
+
27
+ ```
28
+ YYYY_MM_DD_HH_mm_[Categorie]_titre_du_document.md
29
+ ```
30
+
31
+ Exemple :
32
+
33
+ ```
34
+ 2024_03_15_10_30_[Architecture]_choix_base_de_donnees.md
35
+ 2024_03_15_14_00_[Tutoriel]_premiers_pas.md
36
+ ```
37
+
38
+ Le pattern est entièrement configurable depuis le panneau Admin. L'outil reconnaît les tokens `YYYY`, `MM`, `DD`, `HH`, `mm`, et `[Category]`.
39
+
40
+ > **Contrainte** : le pattern doit contenir `[Category]` exactement une fois.
41
+
42
+ ---
43
+
44
+ ## Organisation des documents
45
+
46
+ Les documents sont organisés en **catégories** (extraites du nom de fichier) et en **sous-dossiers** (reflétant l'arborescence du système de fichiers).
47
+
48
+ Dans la barre latérale :
49
+
50
+ - La catégorie **General** apparaît toujours en premier
51
+ - Les **sous-dossiers** sont affichés ensuite, triés alphabétiquement — un préfixe numérique (`1_`, `2_`) permet de contrôler l'ordre
52
+ - Les autres **catégories** suivent, triées alphabétiquement
53
+
54
+ ---
55
+
56
+ ## Fonctionnalités
57
+
58
+ ### Lecture et navigation
59
+
60
+ - **Deep links** : chaque document a une URL stable (`?doc=id`) que vous pouvez partager ou mettre en favori
61
+ - **Recherche instantanée** : filtre par titre et catégorie côté client, puis recherche plein texte côté serveur (350 ms de délai)
62
+ - **Ancres** : les titres `## Mon titre` génèrent automatiquement des ancres navigables
63
+ - **Mode pleine page** : bouton *Pleine page* pour masquer la sidebar
64
+
65
+ ### Édition
66
+
67
+ - Cliquez sur **Edit** pour éditer le Markdown brut directement dans le navigateur
68
+ - **Cmd/Ctrl+V** avec une image dans le presse-papiers : l'image est uploadée automatiquement dans `DOCS_FOLDER/images/` et le lien est inséré
69
+ - **Save** re-rend le document sans recharger la page
70
+
71
+ ### Export PDF
72
+
73
+ - **Export PDF (article courant)** : bouton dans le header de l'article, imprime le document affiché
74
+ - **Export PDF (tous les documents)** : bouton *📄 PDF* en haut de la barre latérale — génère un PDF complet avec table des matières et liens inter-documents fonctionnels
75
+
76
+ ### Diagrammes
77
+
78
+ Créez des diagrammes interactifs via **⬡ Diagram** dans le header. Les diagrammes peuvent être liés à des articles via le bouton *⬡ Diagram* de l'éditeur. Un clic sur l'image du diagramme dans un article ouvre l'éditeur de diagramme.
79
+
80
+ ### Word Cloud
81
+
82
+ Le bouton *☁ Word Cloud* permet de générer un nuage de mots à partir de n'importe quel dossier de votre système de fichiers — utile pour visualiser les thèmes dominants d'une base de code ou d'une documentation.
83
+
84
+ ### Admin
85
+
86
+ Accessible via **⚙ Admin** dans le header. Permet de configurer :
87
+
88
+ - Le titre de l'application
89
+ - Le thème
90
+ - Le pattern de nommage des fichiers
91
+ - Les fichiers supplémentaires (*Extra files* — fichiers Markdown situés en dehors du dossier principal)
92
+ - Le mode debug des diagrammes
93
+
94
+ ---
95
+
96
+ ## Recommandation : écrire avec la méthode Diátaxis
97
+
98
+ > "Un document, une seule orientation."
99
+
100
+ La documentation non structurée accumule du contenu hétérogène qui finit par ne plus servir personne. La méthode **Diátaxis** propose un cadre simple : chaque document appartient à exactement **un des quatre quadrants**, définis par deux axes.
101
+
102
+ ### Les deux axes
103
+
104
+ ```
105
+ APPRENTISSAGE
106
+
107
+ Tutoriel │ Explication
108
+ (pratique+apprendre) │ (théorique+apprendre)
109
+
110
+ PRATIQUE ────────────────┼──────────────── THÉORIQUE
111
+
112
+ Guide pratique │ Référence
113
+ (pratique+appliquer) │ (théorique+appliquer)
114
+
115
+ APPLICATION
116
+ ```
117
+
118
+ ---
119
+
120
+ ### Quadrant 1 — Tutoriel
121
+
122
+ **Question clé :** *"Peux-tu m'apprendre à… ?"*
123
+
124
+ Un tutoriel guide un **débutant** pas à pas vers un résultat concret. Il ne suppose aucune connaissance préalable. L'objectif n'est pas d'expliquer *pourquoi* les choses fonctionnent, mais de faire réussir l'apprenant.
125
+
126
+ **Caractéristiques :**
127
+ - Étapes numérotées, courtes, testées
128
+ - Résultat visible et vérifiable à chaque étape
129
+ - Environnement propre (n'assume rien d'installé)
130
+ - Captures d'écran si besoin
131
+ - Durée : 5 à 15 minutes
132
+
133
+ **Exemple dans une documentation produit :**
134
+
135
+ ```
136
+ ## Créer votre premier document
137
+
138
+ 1. Créez un dossier `docs/` dans votre projet
139
+ 2. Lancez `npx living-documentation ./docs`
140
+ 3. Ouvrez http://localhost:4321 dans votre navigateur
141
+ 4. Cliquez sur **+** dans la barre latérale
142
+ 5. Saisissez le titre "Mon premier document" et cliquez **Create**
143
+
144
+ ✅ Votre document apparaît dans la sidebar sous la catégorie General.
145
+ ```
146
+
147
+ ---
148
+
149
+ ### Quadrant 2 — Guide pratique (*How-to*)
150
+
151
+ **Question clé :** *"Comment faire… ?"*
152
+
153
+ Un guide pratique aide un utilisateur qui **sait déjà ce qu'il veut faire** mais a besoin des étapes pour y arriver. Contrairement au tutoriel, il suppose un contexte existant et va droit au but.
154
+
155
+ **Caractéristiques :**
156
+ - Prérequis listés en tête
157
+ - Étapes ordonnées vers un objectif précis
158
+ - Variantes et alternatives mentionnées
159
+ - Erreurs courantes anticipées
160
+ - Pas d'explications conceptuelles
161
+
162
+ **Exemple :**
163
+
164
+ ```
165
+ ## Comment configurer un pattern de nommage personnalisé
166
+
167
+ **Prérequis** : Living Documentation démarré, accès à Admin
168
+
169
+ 1. Ouvrez **⚙ Admin**
170
+ 2. Dans le champ *Filename pattern*, saisissez votre pattern
171
+ — ex. : `[Category]_YYYY_MM_DD_titre`
172
+ 3. Cliquez **Save**
173
+ 4. Vérifiez la fenêtre *New Document* : le nom prévisualisé reflète le nouveau pattern
174
+
175
+ ⚠️ Le pattern doit contenir `[Category]` exactement une fois.
176
+ ```
177
+
178
+ ---
179
+
180
+ ### Quadrant 3 — Explication (*Concept*)
181
+
182
+ **Question clé :** *"Pourquoi ça fonctionne ainsi ?"*
183
+
184
+ Une explication **construit la compréhension**. Elle ne donne pas d'instructions mais éclaire les principes sous-jacents, les choix de conception, les compromis. Elle est lue hors contexte de travail, pour apprendre.
185
+
186
+ **Caractéristiques :**
187
+ - Analogies et schémas
188
+ - Références croisées vers d'autres concepts
189
+ - Aucune instruction à suivre
190
+ - Répond au *pourquoi*, pas au *comment*
191
+
192
+ **Exemple :**
193
+
194
+ ```
195
+ ## Pourquoi le nommage des fichiers détermine la structure
196
+
197
+ Living Documentation ne s'appuie sur aucune base de données.
198
+ La date, la catégorie et le titre sont encodés dans le nom du fichier,
199
+ ce qui rend la documentation portable : un simple `cp -r` ou un
200
+ dépôt Git suffit à la transférer. Le parser reconstruit la structure
201
+ à la volée à chaque démarrage.
202
+
203
+ Ce choix implique un compromis : renommer un fichier change son ID
204
+ et invalide les deep links existants.
205
+ ```
206
+
207
+ ---
208
+
209
+ ### Quadrant 4 — Référence
210
+
211
+ **Question clé :** *"Quelle est exactement la valeur de… ?"*
212
+
213
+ Une référence est **consultée pendant le travail**, jamais lue de A à Z. Elle est exhaustive, structurée de façon uniforme, et mise à jour en même temps que le code.
214
+
215
+ **Caractéristiques :**
216
+ - Format tabulaire ou liste structurée
217
+ - Exhaustif (tous les cas couverts)
218
+ - Exemples pratiques inclus
219
+ - Aucune narration ni explication
220
+
221
+ **Exemple :**
222
+
223
+ ```
224
+ ## Tokens du pattern de nommage
225
+
226
+ | Token | Description | Exemple |
227
+ |-------------|------------------------------------|-----------|
228
+ | `YYYY` | Année sur 4 chiffres | `2024` |
229
+ | `MM` | Mois sur 2 chiffres | `03` |
230
+ | `DD` | Jour sur 2 chiffres | `15` |
231
+ | `HH` | Heure sur 2 chiffres (00–23) | `14` |
232
+ | `mm` | Minutes sur 2 chiffres | `30` |
233
+ | `[Category]`| Nom de catégorie entre crochets | `[Guide]` |
234
+ | `title` | Titre en snake_case | `mon_doc` |
235
+ ```
236
+
237
+ ---
238
+
239
+ ### Appliquer Diátaxis dans Living Documentation
240
+
241
+ Utilisez les **catégories** pour distinguer les types :
242
+
243
+ | Catégorie suggérée | Quadrant Diátaxis |
244
+ |--------------------|-------------------|
245
+ | `[Tutoriel]` | Tutoriel |
246
+ | `[Guide]` | Guide pratique |
247
+ | `[Concept]` | Explication |
248
+ | `[Reference]` | Référence |
249
+
250
+ Organisez ensuite par **domaine fonctionnel** via les sous-dossiers :
251
+
252
+ ```
253
+ docs/
254
+ ├── authentification/
255
+ │ ├── 2024_01_10_[Tutoriel]_premiers_pas_auth.md
256
+ │ ├── 2024_01_11_[Guide]_configurer_oauth.md
257
+ │ ├── 2024_01_12_[Concept]_jwt_vs_sessions.md
258
+ │ └── 2024_01_13_[Reference]_endpoints_auth.md
259
+ └── facturation/
260
+ ├── 2024_02_01_[Tutoriel]_creer_premiere_facture.md
261
+ └── 2024_02_02_[Reference]_codes_erreur_paiement.md
262
+ ```
263
+
264
+ > **Règle d'or** : si vous hésitez entre deux quadrants pour un document, c'est souvent le signe qu'il faut le diviser en deux documents distincts.
265
+
266
+ ---
267
+
268
+ ## Ressources
269
+
270
+ - [Diátaxis — site officiel](https://diataxis.fr)
271
+ - [Documentation chaotique ? Diátaxis à la rescousse](https://dev.to/onepoint/documentation-chaotique-diataxis-a-la-rescousse--3e9o)
@@ -0,0 +1,40 @@
1
+ # En utilisant l'éditeur
2
+ <details><summary>Cliquer pour voir les détails</summary>
3
+
4
+ Si vous ne maitrisez pas le markdown, vous pouvez utiliser l'éditeur de document et insérer un **Snippet** de type :
5
+ - lien
6
+ - lien vers un document
7
+ - lien vers une ancre
8
+ - lien vers une ancre d'un autre document
9
+ ![image](./images/liens_snippets.png)
10
+ </details>
11
+
12
+ ---
13
+
14
+ # En codant
15
+ <details><summary>Cliquer pour voir les détails</summary>
16
+
17
+ Les images peuvent être intégrés dans vos documents de différentes façons mais au final les images sont représentées dans votre document par du code `markdown`
18
+
19
+ Une image peut être **simple** ou **liée à une destination**
20
+
21
+ - simple
22
+ ```markdown
23
+ ![Découvrons les ADRs](./images/decouverte_adrs.png)
24
+ ```
25
+
26
+ - liée à un autre document de `living documentation`
27
+ ```
28
+ [![Découvrons les ADRs](./images/decouverte_adrs.png)](?doc=3_concept%252F2026_04_08_20_58_%255BDOCUMENTING%255D_ADRS)
29
+ ```
30
+
31
+ - liée à un **diagramme** de `living documentation`
32
+ ```
33
+ [![The Living Documentation Tool](./images/living_documentation_tool.png)](/diagram?id=d1775684671412)
34
+ ```
35
+
36
+ - liée à autre chose (généralement une page web)
37
+ ```
38
+ [![NPM Package Living Documentation](npm_logo.png)](https://www.npmjs.com/package/living-documentation)
39
+ ```
40
+ </details>
@@ -0,0 +1,32 @@
1
+ 1 . Lancez l'outil en pointant vers votre dossier de documentation, le mieux étant de versionner ce dossier au sein de votre projet :
2
+
3
+ ```bash
4
+ npx living-documentation ./docs
5
+ ```
6
+
7
+ Le serveur démarre sur le port **4321** par défaut. Ouvrez [http://localhost:4321](http://localhost:4321) dans votre navigateur.
8
+
9
+ ---
10
+
11
+ ### Options disponibles
12
+
13
+ Pour connaitre toutes les options disponibles faites
14
+ ```bash
15
+ npx living-documentation -h
16
+ ```
17
+
18
+ ```
19
+ Usage: living-documentation [options] [folder]
20
+
21
+ Serve a local Markdown documentation viewer
22
+
23
+ Arguments:
24
+ folder Path to documentation folder (default: ".")
25
+
26
+ Options:
27
+ -V, --version output the version number
28
+ -i, --init Initialize a demo project
29
+ -p, --port <number> Port to listen on (default: "4321")
30
+ -o, --open Open browser automatically
31
+ -h, --help display help for command
32
+ ```
@@ -0,0 +1,65 @@
1
+ ## Recherche plein texte
2
+
3
+ Living Documentation propose deux niveaux de recherche accessibles depuis le champ en haut de la barre latérale.
4
+
5
+ ---
6
+
7
+ ### Filtre instantané (client-side)
8
+
9
+ Dès que vous tapez dans le champ de recherche, la liste des documents est filtrée **en temps réel** sur le titre et la catégorie.
10
+
11
+ - Aucun délai, aucun rechargement
12
+ - Utile pour retrouver rapidement un document dont vous connaissez le nom
13
+
14
+ ---
15
+
16
+ ### Recherche plein texte (server-side)
17
+
18
+ Après **350 ms** sans frappe, une recherche côté serveur est déclenchée automatiquement. Elle parcourt le contenu complet de tous les fichiers `.md`.
19
+
20
+ **Résultats :**
21
+
22
+ - Chaque fichier correspondant est listé
23
+ - Pour chaque fichier, **toutes les occurrences** sont affichées avec leur contexte
24
+ - Les occurrences sont **surlignées** dans la liste
25
+ - Cliquer sur une occurrence ouvre le document **et défile jusqu'à la section concernée**
26
+
27
+ ---
28
+
29
+ ### Cas d'usage
30
+
31
+ | Vous cherchez… | Approche recommandée |
32
+ |-----------------------------------------|-------------------------------|
33
+ | Un document dont vous connaissez le nom | Filtre instantané (taper le titre) |
34
+ | Un concept mentionné dans n'importe quel doc | Recherche plein texte (attendre 350 ms) |
35
+ | Toutes les occurrences d'un terme | Recherche plein texte |
36
+
37
+ ---
38
+
39
+ ### Deep links
40
+
41
+ Chaque document possède une **URL stable** de la forme :
42
+
43
+ ```
44
+ http://localhost:4321/?doc=<id_encodé>
45
+ ```
46
+
47
+ Vous pouvez **copier cette URL** depuis la barre d'adresse du navigateur et la partager, la mettre en favori, ou l'utiliser dans un lien Markdown inter-documents :
48
+
49
+ ```markdown
50
+ [Voir la référence API](?doc=4_reference%252F2026_04_09_02_00_%255BREFERENCE%255D_tokens_pattern_nommage)
51
+ ```
52
+
53
+ > L'ID est stable tant que le nom du fichier ne change pas. Renommer un fichier invalide les liens existants.
54
+
55
+ ---
56
+
57
+ ### Navigation par ancres
58
+
59
+ Les titres `##`, `###`, etc. génèrent automatiquement des **ancres navigables**. Vous pouvez créer un lien vers une section précise :
60
+
61
+ ```markdown
62
+ [Voir la section Résultats](#résultats)
63
+ ```
64
+
65
+ Le scroll est déclenché après le rendu asynchrone du document — le lien fonctionne même si la page vient d'être ouverte.
@@ -0,0 +1,43 @@
1
+ ## Exporter un document en PDF
2
+
3
+ Living Documentation propose deux modes d'export PDF, accessibles sans configuration particulière.
4
+
5
+ ---
6
+
7
+ ### Export du document courant
8
+
9
+ 1. Ouvrez le document à exporter.
10
+ 2. Cliquez sur le bouton **`📄 PDF`** dans le header de l'article.
11
+ 3. La boîte de dialogue d'impression du navigateur s'ouvre.
12
+ 4. Choisissez **Enregistrer en PDF** comme imprimante.
13
+
14
+ **Ce qui est inclus :**
15
+
16
+ - Le contenu de l'article (rendu HTML complet)
17
+ - Les blocs de code avec coloration syntaxique
18
+
19
+ **Ce qui est masqué à l'impression :**
20
+
21
+ - La barre latérale
22
+ - Le header de navigation
23
+ - Les boutons d'action (Edit, PDF, etc.)
24
+
25
+ > Le CSS `@media print` est configuré pour produire un rendu propre sans éléments d'interface.
26
+
27
+ ---
28
+
29
+ ### Export de tous les documents (PDF complet)
30
+
31
+ 1. Cliquez sur le bouton **`📄 PDF`** en haut de la **barre latérale** (pas dans l'article).
32
+ 2. Un PDF complet est généré avec :
33
+ - Une **table des matières** cliquable en début de document
34
+ - Tous les documents dans l'ordre de la sidebar
35
+ - Les **liens inter-documents** restent fonctionnels dans le PDF
36
+
37
+ ---
38
+
39
+ ### Conseils pour un meilleur rendu
40
+
41
+ - Utilisez **Chrome** ou **Edge** pour la meilleure qualité d'export PDF (le moteur de rendu produit des résultats plus fidèles que Safari ou Firefox)
42
+ - Dans la boîte de dialogue d'impression, activez **"Graphiques d'arrière-plan"** pour conserver les couleurs des blocs de code et des badges
43
+ - Format recommandé : **A4**, marges normales