How tednaleid/limn works
Limn is an offline-capable, keyboard-first mind-mapping app with web/PWA, desktop, and Obsidian entry points. The main workflow resolves or opens a document, edits its map through the shared core Editor, renders it, and persists or exports it. The graph includes documented editing, formatting, sharing, and storage capabilities; some subsystem wiring is omitted where the sampled source does not establish callers.
Main entry points: App.tsx React app · Editor.ts Core Editor · main.tsx Web bootstrap · docRouting.ts Document routing
Components 25
App entry points
- Web bootstrap
packages/web/src/main.tsx - React app
packages/web/src/App.tsx - Obsidian plugin
packages/obsidian/src/main.ts
Mind map editing
- Core Editor
packages/core/src/editor/Editor.ts - Mind map store
packages/core/src/store/MindMapStore.ts - Key dispatch
packages/core/src/keybindings/dispatch.ts - Spatial navigation
packages/core/src/editor/navigation.ts - EasyMotion jumps
packages/core/src/editor/easymotion.ts - Drag and reparent
packages/core/src/editor/drag.ts - Map layout
packages/core/src/layout/layout.ts - Inline markdown
packages/core/src/markdown/inlineMarkdown.ts
Rendering and interaction
- Keyboard handler
packages/web/src/input/useKeyboardHandler.ts - SVG mind map
packages/web/src/components/MindMapCanvas.tsx - SVG export
packages/web/src/export/svg.ts
Documents and persistence
- Document routing
packages/web/src/persistence/docRouting.ts - Web persistence
packages/web/src/persistence/WebPersistenceProvider.ts - Auto-save
packages/core/src/persistence/AutoSaveController.ts - File serialization
packages/core/src/serialization/serialization.ts - Share URL codec
packages/core/src/export/url.ts
Platform integrations
- Obsidian view
packages/obsidian/src/LimnView.ts - Desktop app
packages/desktop/Limn/LimnApp.swift - WebView bridge
packages/desktop/Limn/WebViewBridge.swift
Other components
- User
- Browser IndexedDB
- Local files
Connections 28
- User → Web bootstrap: opens app
- Web bootstrap → Document routing: resolves document
- Web bootstrap → React app: mounts
- Document routing → Browser IndexedDB: reads recent docs
- Document routing → Browser IndexedDB: migrates legacy doc
- React app → Core Editor: creates and loads
- React app → Web persistence: selects provider
- React app → Auto-save: starts auto-save
- Auto-save → Core Editor: reads map data
- Auto-save → Web persistence: saves changes
- Web persistence → Browser IndexedDB: stores documents
- Keyboard handler → Key dispatch: dispatches keys
- Key dispatch → Core Editor: invokes edits
- React app → SVG mind map: renders view
- SVG mind map → Core Editor: reads map state
- Core Editor → Mind map store: owns map state
- Drag and reparent → Mind map store: mutates positions
- Drag and reparent → Map layout: centers children
- Obsidian plugin → Obsidian view: registers view
- User → Obsidian plugin: opens plugin
- Obsidian view → Core Editor: edits document
- User → Desktop app: opens app
- Desktop app → WebView bridge: bridges web view
- Desktop app → Local files: opens and saves files
- React app → File serialization: loads or saves format
- File serialization → Local files: encodes ZIP documents
- React app → SVG export: exports map
- React app → Share URL codec: creates share URL