# markmindckm/obsidian-enhancing-mindmap architecture

> Architecture diagram of the GitHub repository markmindckm/obsidian-enhancing-mindmap, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/markmindckm/obsidian-enhancing-mindmap
- Repository: https://github.com/markmindckm/obsidian-enhancing-mindmap

## Overview

This is an Obsidian plugin for creating and editing mind maps from vault Markdown. The main workflow starts with a workspace command or opening a Markdown file in the mind-map view, builds and lays out an editable node tree, then saves changes back to the vault. Editing commands support node changes, drag-and-drop, and undo/redo; the view also exports images. The README documents switching between mind-map and Markdown views and synchronization between boards. Some of those relationships are not visible in the sampled source, so they are shown as unverified rather than asserted.

Main entry points: [`src/MindMapView.ts`](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/MindMapView.ts) (Mind map view), [`src/mindmap/mindmap.ts`](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/mindmap.ts) (Mind map controller), [`src/main.ts`](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/main.ts) (Workspace commands), [`src/mindmap/Execute.ts`](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/Execute.ts) (Command executor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_plugin["Obsidian integration"]
  node_workspace["Workspace commands<br/>[main.ts]"]
  node_view["Mind map view<br/>[MindMapView.ts]"]
  node_vault[("Vault Markdown")]
  node_sync["Board synchronization<br/>[MindMapView.ts]"]
end

subgraph group_map["Mind map runtime"]
  node_tree["Node tree<br/>[INode.ts]"]
  node_layout["Map layout<br/>[Layout.ts]"]
  node_mindmap["Mind map controller<br/>[mindmap.ts]"]
  node_xmind["XMind Zen import<br/>[xmindZen.ts]"]
end

subgraph group_editing["Editing and history"]
  node_executor["Command executor<br/>[Execute.ts]"]
  node_commands["Edit commands<br/>[Cmds.ts]"]
  node_history["Undo redo history<br/>[History.ts]"]
end

subgraph group_support["Settings and export"]
  node_settings["Plugin settings<br/>[settings.ts]"]
  node_settings_ui["Settings panel<br/>[settingTab.ts]"]
  node_localization["Translations<br/>[helpers.ts]"]
  node_image_export["DOM image export"]
  node_markmap["Markdown transformer"]
end

node_user(("Obsidian user"))

node_user -->|"invokes commands"| node_workspace
node_workspace -->|"opens view"| node_view
node_view -.->|"reads and writes"| node_vault
node_view -->|"creates controller"| node_mindmap
node_mindmap -->|"manages nodes"| node_tree
node_mindmap -->|"creates layout"| node_layout
node_mindmap -->|"dispatches edits"| node_executor
node_executor -->|"creates commands"| node_commands
node_executor -->|"records commands"| node_history
node_history -->|"executes and reverts"| node_commands
node_mindmap -->|"converts import"| node_xmind
node_view -->|"transforms Markdown"| node_markmap
node_view -->|"exports image"| node_image_export
node_workspace -->|"translates commands"| node_localization
node_settings_ui -->|"configures"| node_settings
node_workspace -.->|"registers settings"| node_settings_ui
node_view -.->|"synchronizes boards"| node_sync
node_user -.->|"requests synchronization"| node_sync

click node_workspace "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/main.ts"
click node_view "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/MindMapView.ts"
click node_tree "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/INode.ts"
click node_layout "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/Layout.ts"
click node_mindmap "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/mindmap.ts"
click node_xmind "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/import/xmindZen.ts"
click node_executor "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/Execute.ts"
click node_commands "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/Cmds.ts"
click node_history "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/History.ts"
click node_settings "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/settings.ts"
click node_settings_ui "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/settingTab.ts"
click node_localization "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/lang/helpers.ts"
click node_image_export "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/dom-to-image-more.js"
click node_markmap "https://github.com/markmindckm/obsidian-enhancing-mindmap/tree/main/src/markmapLib/markmap-lib"
click node_sync "https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/MindMapView.ts"

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_workspace,node_view,node_vault,node_sync,node_user toneBlue
class node_tree,node_layout,node_mindmap,node_xmind toneAmber
class node_executor,node_commands,node_history toneMint
class node_settings,node_settings_ui,node_localization,node_image_export,node_markmap toneRose
```

## Components

### Obsidian integration

- [Workspace commands](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/main.ts): `src/main.ts`
- [Mind map view](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/MindMapView.ts): `src/MindMapView.ts`
- **Vault Markdown**
- [Board synchronization](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/MindMapView.ts): `src/MindMapView.ts`

### Mind map runtime

- [Node tree](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/INode.ts): `src/mindmap/INode.ts`
- [Map layout](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/Layout.ts): `src/mindmap/Layout.ts`
- [Mind map controller](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/mindmap.ts): `src/mindmap/mindmap.ts`
- [XMind Zen import](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/import/xmindZen.ts): `src/mindmap/import/xmindZen.ts`

### Editing and history

- [Command executor](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/Execute.ts): `src/mindmap/Execute.ts`
- [Edit commands](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/Cmds.ts): `src/mindmap/Cmds.ts`
- [Undo redo history](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/mindmap/History.ts): `src/mindmap/History.ts`

### Settings and export

- [Plugin settings](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/settings.ts): `src/settings.ts`
- [Settings panel](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/settingTab.ts): `src/settingTab.ts`
- [Translations](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/lang/helpers.ts): `src/lang/helpers.ts`
- [DOM image export](https://github.com/markmindckm/obsidian-enhancing-mindmap/blob/main/src/dom-to-image-more.js): `src/dom-to-image-more.js`
- [Markdown transformer](https://github.com/markmindckm/obsidian-enhancing-mindmap/tree/main/src/markmapLib/markmap-lib): `src/markmapLib/markmap-lib`

### Other components

- **Obsidian user**

## Connections

- Obsidian user → Workspace commands: invokes commands (evidence: `src/main.ts`)
- Workspace commands → Mind map view: opens view (evidence: `src/main.ts`)
- Mind map view → Vault Markdown: reads and writes
- Mind map view → Mind map controller: creates controller (evidence: `src/MindMapView.ts`)
- Mind map controller → Node tree: manages nodes (evidence: `src/mindmap/mindmap.ts`)
- Mind map controller → Map layout: creates layout (evidence: `src/mindmap/mindmap.ts`)
- Mind map controller → Command executor: dispatches edits (evidence: `src/mindmap/mindmap.ts`)
- Command executor → Edit commands: creates commands (evidence: `src/mindmap/Execute.ts`)
- Command executor → Undo redo history: records commands (evidence: `src/mindmap/Execute.ts`)
- Undo redo history → Edit commands: executes and reverts (evidence: `src/mindmap/History.ts`)
- Mind map controller → XMind Zen import: converts import (evidence: `src/mindmap/mindmap.ts`)
- Mind map view → Markdown transformer: transforms Markdown (evidence: `src/MindMapView.ts`)
- Mind map view → DOM image export: exports image (evidence: `src/MindMapView.ts`)
- Workspace commands → Translations: translates commands (evidence: `src/main.ts`)
- Settings panel → Plugin settings: configures (evidence: `src/settingTab.ts`)
- Workspace commands → Settings panel: registers settings (evidence: `src/main.ts`)
- Mind map view → Board synchronization: synchronizes boards (evidence: `README.md`)
- Obsidian user → Board synchronization: requests synchronization (evidence: `README.md`)
