MindZJ

pending

by SuperJohn

An interactive mind map plugin with rainbow connections, drag & drop, custom styles, and 19 languages.

Updated 9d agoDiscovered via Obsidian Unofficial Plugins
View on GitHub

πŸ—ΊοΈ

MindZJ β€” Mind Map Plugin for Obsidian

A feature-rich, fully customizable mind mapping plugin built natively for Obsidian.

Features β€’ Installation β€’ Quick Start β€’ Shortcuts β€’ Customization β€’ Development β€’ License

Version License Obsidian Platform

🌐 README available in: English | δΈ­ζ–‡ | ζ—₯本θͺž | FranΓ§ais | Deutsch EspaΓ±ol


Buy Me A Coffee Β  Ko-fi Β  PayPal

If you find MindZJ useful, consider supporting the project


Preview

MindZJ Main Interface
Creating nodes, editing text, drag & drop, and rainbow connections in action

MindZJ Demo
MindZJ main interface β€” create, edit, and style mind maps directly inside Obsidian

Style Customization
Global Style Panel β€” fine-tune every visual detail of your mind map


Features

Core

  • Native .mindzj file format β€” files live in your vault and sync with Obsidian's file system
  • Unlimited root nodes β€” create multiple independent trees on a single canvas
  • Bidirectional layout β€” place child nodes to the right, left, or both sides of a root
  • Markdown mode β€” toggle between visual map view and raw Markdown text editing
  • Undo / Redo β€” full history stack for safe experimentation

Editing

  • Inline text editing β€” double-click or press Space to edit a node in place
  • Type-to-edit β€” start typing while a node is selected to enter edit mode directly
  • Multi-line support β€” Shift+Enter for line breaks within a single node
  • Keyboard-driven workflow β€” Enter to add a sibling, Tab to add a child, arrow keys to navigate
  • Multi-select β€” Shift/Ctrl-click or box-select to operate on multiple nodes at once
  • Copy / Cut / Paste β€” full clipboard support for node trees, including cross-map paste
  • Edit on create β€” optionally enter edit mode immediately when creating new nodes

Visual

  • 6 connection line styles β€” Bezier, Straight, Curved, Step, Bracket, and Loose
  • 9 built-in rainbow palettes β€” Classic, Pastel, Neon, Earth, Ocean, Sunset, Forest, Candy, Monochrome
  • Custom rainbow palettes β€” define your own color sequences for connection lines
  • Per-node style overrides β€” change background, text color, font, border, and border radius on individual nodes
  • Per-node connection color & width β€” override the global connection color for any branch
  • 10 font choices β€” including system fonts, serif, sans-serif, and monospace
  • 5 border styles β€” solid, dashed, dotted, double, none
  • Canvas background color β€” match your theme or set a custom background

Interaction

  • Drag & drop β€” reorder siblings and reparent nodes by dragging
  • Root node dragging β€” freely reposition root nodes on the canvas
  • Zoom & pan β€” scroll to pan, Shift+scroll or pinch to zoom, with configurable inversion
  • Focus node β€” press F to center the selected node in the viewport
  • Search β€” Ctrl+F to search all nodes by text, with result highlighting and navigation

Toolbar & Style Panel

  • Customizable toolbar β€” position (top / bottom), padding, background, button colors, and border style
  • Dedicated Style Panel β€” a right-side panel with every style setting organized into collapsible sections
  • In-map style modal β€” right-click the canvas β†’ Global Style for quick adjustments without leaving the map
  • Show / hide toolbar β€” toggle from settings, right-click menu, or the style panel

Internationalization

  • 19 languages β€” English, δΈ­ζ–‡, ζ—₯本θͺž, FranΓ§ais, Deutsch, EspaΓ±ol, Русский, Svenska, ΰ€Ήΰ€Ώΰ€¨ΰ₯ΰ€¦ΰ₯€, ν•œκ΅­μ–΄, PortuguΓͺs, Suomi, Norsk, Nederlands, Liechtensteinisch, Dansk, Χ’Χ‘Χ¨Χ™Χͺ, Italiano, Ψ§Ω„ΨΉΨ±Ψ¨ΩŠΨ©
  • Custom node names β€” rename the default "Root" and "Child" labels per language

Settings

  • Fully customizable keyboard shortcuts β€” rebind every action with a visual key recorder
  • Scroll & zoom inversion β€” independent toggles for vertical scroll, horizontal scroll, and zoom direction
  • Developer mode β€” overlay showing internal state (selection, pan, zoom, node count)

Installation

From Obsidian Community Plugins (Recommended)

Coming soon β€” the plugin is currently in development.

  1. Open Settings β†’ Community Plugins β†’ Browse
  2. Search for MindZJ
  3. Click Install, then Enable

Manual Installation

  1. Download the latest release (main.js, manifest.json) from GitHub Releases
  2. Create a folder in your vault: .obsidian/plugins/mindzj/
  3. Copy main.js and manifest.json into that folder
  4. Restart Obsidian, then enable MindZJ in Settings β†’ Community Plugins

Quick Start

  1. Click the πŸ—ΊοΈ network icon in the left ribbon, or run the command "New MindZJ"
  2. A new .mindzj file is created and opened in map view
  3. Double-click a node or press Space to edit its text
  4. Press Tab to add a child node, Enter to add a sibling
  5. Right-click the canvas to access the global style modal, or click 🎨 Style in the toolbar to open the style panel

Quick Start
From zero to a styled mind map in under 30 seconds


Keyboard Shortcuts

All shortcuts are rebindable in Settings β†’ MindZJ β†’ Keyboard Shortcuts.

ActionDefault Shortcut
Edit nodeSpace or Ctrl + Enter
Add siblingEnter
Add childTab
Add left childShift+Tab
Focus / center nodeF
UndoCtrl + Z
RedoCtrl + Shift + Z
Search nodesCtrl + F
Copy nodeCtrl + C
Cut nodeCtrl + X
Paste nodeCtrl + V
Delete nodeDelete / Backspace
Navigate↑ ↓ ← β†’
Line break (in edit)Shift + Enter
Zoom inShift + =
Zoom outShift + -
Reset zoomShift + 0
Pan canvasHold Space + mouse drag

Customization

Global Style

The Global Style panel controls the default appearance of all nodes and connections. Access it via:

  • Toolbar β†’ 🎨 Style button β†’ opens the right-side panel
  • Right-click canvas β†’ 🎨 Global Style β†’ opens an in-map modal
  • Settings β†’ MindZJ β†’ basic style options (canvas background, theme)

Available style options include:

CategoryProperties
Child NodeBackground, text color, font size, font family, border (style/color/width/radius), min width, min height
Root NodeSame as child node, with independent defaults
ConnectionStyle (6 types), color, width, length, direction, rainbow toggle & palette
SelectionSelection outline color, width, offset; edit outline color & width
TextAlignment (left/center/right), padding, line height
CanvasBackground color
ToolbarPosition, padding (top/right/bottom/left), background, button background/border/text colors

Per-Node Style

Right-click any node β†’ 🎨 Style to override its individual appearance:

  • Background color, text color, font size, font family
  • Border style, color, width, radius
  • Connection line color and width (for the branch leading to this node)

Rainbow Connections

Enable rainbow mode to automatically color each branch with a distinct hue. Choose from 9 built-in palettes or define a custom one with up to 12 colors.


File Format

MindZJ uses a custom .mindzj file extension. The file content is plain JSON:

{
    "rootNodes": [
        {
            "id": "uuid",
            "text": "Root",
            "x": 0,
            "y": 0,
            "width": 100,
            "height": 44,
            "children": [
                {
                    "id": "uuid",
                    "text": "Child",
                    "x": 0,
                    "y": 0,
                    "width": 80,
                    "height": 32,
                    "children": []
                }
            ],
            "isRoot": true
        }
    ]
}

Files are human-readable and version-control friendly. They sync seamlessly across devices via Obsidian Sync, iCloud, Git, or any file-based sync tool.


Development

Prerequisites

Setup

git clone https://github.com/zjok/mindzj.git
cd mindzj
npm install

Build

# Development (watch mode β€” auto-rebuilds on file changes)
npm run dev

# Production (single build, no sourcemap, tree-shaken)
npm run build

Project Structure

mindzj/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.ts            # Plugin entry point, commands, lifecycle
β”‚   β”œβ”€β”€ MindMapView.ts     # Core mind map view: rendering, editing, interaction
β”‚   β”œβ”€β”€ StylePanelView.ts  # Right-side style panel view
β”‚   β”œβ”€β”€ SettingsTab.ts     # Plugin settings tab
β”‚   β”œβ”€β”€ types.ts           # TypeScript interfaces, defaults, constants
β”‚   └── i18n.ts            # 19-language translation system
β”œβ”€β”€ manifest.json          # Obsidian plugin manifest
β”œβ”€β”€ package.json           # npm dependencies and scripts
β”œβ”€β”€ tsconfig.json          # TypeScript configuration
β”œβ”€β”€ esbuild.config.mjs     # Build configuration
└── main.js                # Compiled output (generated)

Technology Stack

  • TypeScript β€” strict typing for reliability
  • esbuild β€” fast bundling with tree-shaking
  • Obsidian API β€” native plugin integration (views, settings, commands, file system)
  • SVG + foreignObject β€” hardware-accelerated rendering with HTML content inside SVG nodes

Support

If you find MindZJ useful, consider supporting the project:

Buy Me A Coffee Β  Ko-fi Β  PayPal


License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-or-later).


Made with ❀️ by SuperJohn 2026.03

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.