Projects

Zhijian

Markdown-first mind-map editor built with Avalonia + AtomUI

Documentation

Zhijian

Zhijian

Zhijian is a local Markdown-first mind-map editor built with C#, Avalonia, and AtomUI. It keeps the outline, Markdown text, and graphical mind map synchronized over the same tree model, so users can write structure quickly and inspect it visually.

Repository: https://github.com/dotnet9/Zhijian

Zhijian main window

The screenshots and GIFs on this page were captured from a real running Zhijian desktop session with simulated user operations.

Positioning

  • Starts with a blank mind map: one editable center topic.
  • Outline, Markdown, and mind-map views share the same MindMapNode model.
  • File menu for New, New Window, Open, Open Folder, Recent Files, Save, Save As, Open File Location, and Close.
  • Edit menu for Undo, Redo, structural changes, node deletion, and Copy as Markdown.
  • Theme, Language, Help, and About menus live in the title bar with icons and shortcuts where useful.
  • Language switching uses Lang.Avalonia.Json resources for Simplified Chinese, Traditional Chinese, English, and Japanese.
  • First-run onboarding uses AtomUI Tour to introduce the key operations.
  • Folder mode with Files and Outline tabs, so users can browse supported files before loading one into the editor.
  • AtomUI-based desktop shell, menus, buttons, lists, text inputs, tooltips, Tour, global messages, dialogs, and dark theme.
  • Reusable CodeWF.MindView library with Avalonia-only controls, a mini map, node model, and file codecs.

Highlights

Feature Description
Outline editing Keyboard creation, deletion, promotion, demotion, and node menus for siblings, children, move up/down, notes, and delete.
File workflow New documents, single-file open, folder open, recent files, save, save as, open file location, and unsaved-close prompts.
Mind-map editing Inline title editing, notes, delete, zoom, panning, center-topic navigation, and drag/drop structure changes.
Notes Notes sync between outline and mind-map views and use muted text instead of a separate background block.
Mini map The mini map renders real node coordinates and the current viewport.
Localization Lang.Avalonia.Json resources provide Simplified Chinese, Traditional Chinese, English, and Japanese UI text.
Onboarding AtomUI Tour introduces the first-run workflow and is configured from src/Zhijian/App.config.
Formats Markdown, OPML, and XMind import/export.

Runtime Preview

File menu

Title-bar menus

First-run onboarding

Theme and language switching

Copy Markdown feedback

Open folder workflow

Node menus

Note synchronization

Mini-map navigation

Zoom

Canvas panning

About menu

Structure

src/
  CodeWF.MindView/          Reusable mind-map controls, node model, mini map, and codecs
  CodeWF.MindView.Themes/   Default Avalonia resources for the mind-map controls
  Zhijian/                  AtomUI desktop app, outline view, file services, shell, and ViewModels
docs/
  Architecture notes, source-design docs, and runtime screenshots/GIFs

CodeWF.MindView intentionally has no AtomUI dependency. Zhijian owns the AtomUI shell, title-bar menus, dialogs, file workflow, and outline view.

Reusing CodeWF.MindView

A new Avalonia app can reference CodeWF.MindView and CodeWF.MindView.Themes:

<ItemGroup>
  <ProjectReference Include="..\CodeWF.MindView\CodeWF.MindView.csproj" />
  <ProjectReference Include="..\CodeWF.MindView.Themes\CodeWF.MindView.Themes.csproj" />
</ItemGroup>

Register the resources in App.axaml:

<Application
    xmlns="https://github.com/avaloniaui"
    xmlns:mindThemes="using:CodeWF.MindView.Themes">
    <Application.Styles>
        <mindThemes:MindViewThemes />
    </Application.Styles>
</Application>

Use MindMapEditor in a view:

<UserControl
    xmlns="https://github.com/avaloniaui"
    xmlns:mind="https://codewf.com">
    <mind:MindMapEditor
        Roots="{Binding Roots}"
        SelectedNode="{Binding SelectedNode, Mode=TwoWay}"
        Controller="{Binding}" />
</UserControl>

The host ViewModel provides ObservableCollection<MindMapNode> and implements IMindMapEditorController for level lookup, node creation, deletion, promotion, demotion, and drag/drop moves. File open/save, recent files, and unsaved-change prompts can follow IMindMapFileService and the src/Zhijian app implementation.

Open Source Thanks

Zhijian is built on excellent open source platforms and libraries:

Quick Start

Requirements:

  • .NET 10 SDK
dotnet restore Zhijian.slnx
dotnet build Zhijian.slnx
dotnet run --project src/Zhijian/Zhijian.csproj

Repository