# heart-fire-project/midsoul-wiki architecture

> Architecture diagram of the GitHub repository heart-fire-project/midsoul-wiki, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/heart-fire-project/midsoul-wiki
- Repository: https://github.com/heart-fire-project/midsoul-wiki

## Overview

MidSoul-Wiki is the official player-facing wiki for 午夜灵魂, with an in-browser visual editor for maintaining its documentation. Readers enter through the homepage and navigate game-system articles; authors select files, edit structured Tiptap documents, and save synchronized editor-source and Markdown files. The graph preserves the README’s documented content areas. Editor save details are based on the README; some internal wiring is omitted because the sampled source excerpts are incomplete.

Main entry points: [`src/pages/editor.tsx`](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/pages/editor.tsx) (Editor workspace), [`src/components/editorWorkspace/FileTree.tsx`](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editorWorkspace/FileTree.tsx) (Document file tree), [`src/theme/DocItem/Content/index.tsx`](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/theme/DocItem/Content/index.tsx) (Document wrapper), [`src/pages/index.tsx`](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/pages/index.tsx) (Wiki homepage)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_wiki["Wiki experience"]
  node_homepage["Wiki homepage<br/>[index.tsx]"]
end

subgraph group_content["Game documentation"]
  node_game_docs["Game documentation"]
  node_mechanics["Global mechanics<br/>[1. 全局机制.md]"]
  node_modes["Game modes<br/>[2. 模式介绍.md]"]
  node_maps["Map guide<br/>[3. 地图导览.md]"]
  node_abilities["Abilities<br/>[4. 能力一览.md]"]
  node_echoes["Echo records<br/>[5. 回响记录.md]"]
  node_milestones["Progress milestones<br/>[6. 进度碑刻.md]"]
  node_accessories["Accessories<br/>[7. 饰品集册.md]"]
  node_accessory_text["Accessory text sets<br/>[8. 饰品集册-文本套组详览.md]"]
  node_markdown_source["Markdown documents"]
end

subgraph group_editor["Visual editor"]
  node_editor_page["Editor workspace<br/>[editor.tsx]"]
  node_file_tree["Document file tree<br/>[FileTree.tsx]"]
  node_tree_data["File operations<br/>[fsTree.ts]"]
  node_tiptap["Tiptap editor<br/>[TiptapEditor.tsx]"]
  node_extensions["Editor extensions<br/>[extensions.ts]"]
  node_markdown_import["Markdown import<br/>[fromMarkdown.js]"]
  node_markdown_export["Markdown export<br/>[toMarkdown.js]"]
  node_editor_source["Tiptap JSON source"]
  node_session_storage[("Session draft recovery")]
end

subgraph group_render["Document rendering"]
  node_doc_content["Document wrapper<br/>[index.tsx]"]
  node_data_table["Rich data tables<br/>[DataTable.tsx]"]
  node_color_table["Color tables<br/>[ColorTable.tsx]"]
  node_anchor_scroller["Anchor navigation<br/>[Root.tsx]"]
end

node_reader(("Wiki reader"))
node_author(("Documentation author"))
node_filesystem[("Browser file system")]

node_reader -->|"opens"| node_homepage
node_homepage -->|"links to"| node_game_docs
node_reader -->|"reads"| node_mechanics
node_reader -->|"reads"| node_modes
node_reader -->|"reads"| node_maps
node_reader -->|"reads"| node_abilities
node_reader -->|"reads"| node_echoes
node_reader -->|"reads"| node_milestones
node_reader -->|"reads"| node_accessories
node_reader -->|"reads"| node_accessory_text
node_doc_content -->|"renders tables"| node_data_table
node_doc_content -->|"renders tables"| node_color_table
node_anchor_scroller -->|"navigates anchors"| node_doc_content
node_author -->|"opens editor"| node_editor_page
node_editor_page -->|"displays files"| node_file_tree
node_file_tree -->|"manages files"| node_tree_data
node_tree_data -->|"reads and writes"| node_filesystem
node_file_tree -->|"opens document"| node_editor_page
node_editor_page -->|"edits content"| node_tiptap
node_tiptap -->|"uses extensions"| node_extensions
node_editor_page -->|"imports Markdown"| node_markdown_import
node_editor_page -->|"exports Markdown"| node_markdown_export
node_editor_page -->|"saves recovery draft"| node_session_storage
node_editor_page -->|"writes first"| node_editor_source
node_editor_page -->|"exports on save"| node_markdown_source
node_editor_source -->|"loads for editing"| node_editor_page
node_markdown_source -->|"imports when needed"| node_editor_page

click node_homepage "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/pages/index.tsx"
click node_game_docs "https://github.com/heart-fire-project/midsoul-wiki/tree/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82"
click node_mechanics "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/1.%20%E5%85%A8%E5%B1%80%E6%9C%BA%E5%88%B6.md"
click node_modes "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/2.%20%E6%A8%A1%E5%BC%8F%E4%BB%8B%E7%BB%8D.md"
click node_maps "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/3.%20%E5%9C%B0%E5%9B%BE%E5%AF%BC%E8%A7%88.md"
click node_abilities "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/4.%20%E8%83%BD%E5%8A%9B%E4%B8%80%E8%A7%88.md"
click node_echoes "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/5.%20%E5%9B%9E%E5%93%8D%E8%AE%B0%E5%BD%95.md"
click node_milestones "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/6.%20%E8%BF%9B%E5%BA%A6%E7%A2%91%E5%88%BB.md"
click node_accessories "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/7.%20%E9%A5%B0%E5%93%81%E9%9B%86%E5%86%8C.md"
click node_accessory_text "https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/8.%20%E9%A5%B0%E5%93%81%E9%9B%86%E5%86%8C-%E6%96%87%E6%9C%AC%E5%A5%97%E7%BB%84%E8%AF%A6%E8%A7%88.md"
click node_doc_content "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/theme/DocItem/Content/index.tsx"
click node_data_table "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/DataTable.tsx"
click node_color_table "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/ColorTable.tsx"
click node_anchor_scroller "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/theme/Root.tsx"
click node_editor_page "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/pages/editor.tsx"
click node_file_tree "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editorWorkspace/FileTree.tsx"
click node_tree_data "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editorWorkspace/fsTree.ts"
click node_tiptap "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/TiptapEditor.tsx"
click node_extensions "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/extensions.ts"
click node_markdown_import "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/fromMarkdown.js"
click node_markdown_export "https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/toMarkdown.js"
click node_editor_source "https://github.com/heart-fire-project/midsoul-wiki/tree/main/docs"
click node_markdown_source "https://github.com/heart-fire-project/midsoul-wiki/tree/main/docs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_homepage toneBlue
class node_game_docs,node_mechanics,node_modes,node_maps,node_abilities,node_echoes,node_milestones,node_accessories,node_accessory_text,node_markdown_source,node_filesystem toneAmber
class node_editor_page,node_file_tree,node_tree_data,node_tiptap,node_extensions,node_markdown_import,node_markdown_export,node_editor_source,node_session_storage toneMint
class node_doc_content,node_data_table,node_color_table,node_anchor_scroller toneRose
class node_reader,node_author toneIndigo
```

## Components

### Wiki experience

- [Wiki homepage](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/pages/index.tsx): `src/pages/index.tsx`

### Game documentation

- [Game documentation](https://github.com/heart-fire-project/midsoul-wiki/tree/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82): `docs/午夜灵魂`
- [Global mechanics](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/1.%20%E5%85%A8%E5%B1%80%E6%9C%BA%E5%88%B6.md): `docs/午夜灵魂/1. 全局机制.md`
- [Game modes](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/2.%20%E6%A8%A1%E5%BC%8F%E4%BB%8B%E7%BB%8D.md): `docs/午夜灵魂/2. 模式介绍.md`
- [Map guide](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/3.%20%E5%9C%B0%E5%9B%BE%E5%AF%BC%E8%A7%88.md): `docs/午夜灵魂/3. 地图导览.md`
- [Abilities](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/4.%20%E8%83%BD%E5%8A%9B%E4%B8%80%E8%A7%88.md): `docs/午夜灵魂/4. 能力一览.md`
- [Echo records](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/5.%20%E5%9B%9E%E5%93%8D%E8%AE%B0%E5%BD%95.md): `docs/午夜灵魂/5. 回响记录.md`
- [Progress milestones](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/6.%20%E8%BF%9B%E5%BA%A6%E7%A2%91%E5%88%BB.md): `docs/午夜灵魂/6. 进度碑刻.md`
- [Accessories](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/7.%20%E9%A5%B0%E5%93%81%E9%9B%86%E5%86%8C.md): `docs/午夜灵魂/7. 饰品集册.md`
- [Accessory text sets](https://github.com/heart-fire-project/midsoul-wiki/blob/main/docs/%E5%8D%88%E5%A4%9C%E7%81%B5%E9%AD%82/8.%20%E9%A5%B0%E5%93%81%E9%9B%86%E5%86%8C-%E6%96%87%E6%9C%AC%E5%A5%97%E7%BB%84%E8%AF%A6%E8%A7%88.md): `docs/午夜灵魂/8. 饰品集册-文本套组详览.md`
- [Markdown documents](https://github.com/heart-fire-project/midsoul-wiki/tree/main/docs): `docs`

### Visual editor

- [Editor workspace](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/pages/editor.tsx): `src/pages/editor.tsx`
- [Document file tree](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editorWorkspace/FileTree.tsx): `src/components/editorWorkspace/FileTree.tsx`
- [File operations](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editorWorkspace/fsTree.ts): `src/components/editorWorkspace/fsTree.ts`
- [Tiptap editor](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/TiptapEditor.tsx): `src/components/editor/TiptapEditor.tsx`
- [Editor extensions](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/extensions.ts): `src/components/editor/extensions.ts`
- [Markdown import](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/fromMarkdown.js): `src/components/editor/fromMarkdown.js`
- [Markdown export](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/editor/toMarkdown.js): `src/components/editor/toMarkdown.js`
- [Tiptap JSON source](https://github.com/heart-fire-project/midsoul-wiki/tree/main/docs): `docs`
- **Session draft recovery**

### Document rendering

- [Document wrapper](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/theme/DocItem/Content/index.tsx): `src/theme/DocItem/Content/index.tsx`
- [Rich data tables](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/DataTable.tsx): `src/components/DataTable.tsx`
- [Color tables](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/components/ColorTable.tsx): `src/components/ColorTable.tsx`
- [Anchor navigation](https://github.com/heart-fire-project/midsoul-wiki/blob/main/src/theme/Root.tsx): `src/theme/Root.tsx`

### Other components

- **Wiki reader**
- **Documentation author**
- **Browser file system**

## Connections

- Wiki reader → Wiki homepage: opens
- Wiki homepage → Game documentation: links to
- Wiki reader → Global mechanics: reads
- Wiki reader → Game modes: reads
- Wiki reader → Map guide: reads
- Wiki reader → Abilities: reads
- Wiki reader → Echo records: reads
- Wiki reader → Progress milestones: reads
- Wiki reader → Accessories: reads
- Wiki reader → Accessory text sets: reads
- Document wrapper → Rich data tables: renders tables
- Document wrapper → Color tables: renders tables
- Anchor navigation → Document wrapper: navigates anchors
- Documentation author → Editor workspace: opens editor
- Editor workspace → Document file tree: displays files
- Document file tree → File operations: manages files
- File operations → Browser file system: reads and writes
- Document file tree → Editor workspace: opens document
- Editor workspace → Tiptap editor: edits content
- Tiptap editor → Editor extensions: uses extensions
- Editor workspace → Markdown import: imports Markdown
- Editor workspace → Markdown export: exports Markdown
- Editor workspace → Session draft recovery: saves recovery draft
- Editor workspace → Tiptap JSON source: writes first
- Editor workspace → Markdown documents: exports on save
- Tiptap JSON source → Editor workspace: loads for editing
- Markdown documents → Editor workspace: imports when needed
