Skip to content

web4zn/Progressive-Mindmap

Repository files navigation

🧠 Progressive Mindmap

AI-powered knowledge extraction from conversations β€” visualized as mindmaps

δΈ­ζ–‡ζ–‡ζ‘£

License TypeScript React Tests


Why I built this: After countless conversations with LLMs, I found myself drowning in insights β€” brilliant answers buried in long chat histories, impossible to review or recall. I needed a way to automatically distill conversations into structured knowledge I could revisit at a glance. That's why Progressive Mindmap exists: it turns scattered Q&A into a living mindmap that grows with every conversation.

Progressive Mindmap is a local-first web application that transforms your LLM conversations into structured, editable mindmaps. Unlike traditional mindmap tools where you draw nodes manually, Progressive Mindmap extracts knowledge automatically: chat with any OpenAI-compatible LLM, select the insights you want to keep, and let the AI build a mindmap β€” with incremental updates that preserve your edits across regenerations.

Chat Interface

✨ Features

πŸ€– AI-Native Mindmap Generation

  • Conversation to Knowledge Graph β€” LLM analyzes your chats and produces structured trees
  • Incremental Operations β€” AI outputs surgical edits (add_child, update, merge, delete_leaf) instead of full regeneration
  • Editable Nodes β€” double-click to edit; AI respects your edits (protected by editedByUser flag)

πŸ“š Corpus & Provenance

  • Source Tracking β€” every node shows which conversation messages informed it
  • Material Curation β€” select entire messages or text fragments as source material
  • Conversation Monitoring β€” auto-capture new AI responses into the mindmap corpus

🎨 Canvas & Interaction

  • React Flow Canvas β€” smooth pan/zoom with @xyflow/react + dagre layout
  • Drag-to-Reparent β€” restructure your mindmap by dragging nodes
  • Right-Click Menu β€” add child, move, delete with context menu
  • Collapse/Expand β€” toggle branches for focused viewing
  • Full-Screen Mode β€” immersive mindmap exploration

Mindmap Canvas

βš™οΈ Customizable

  • Configurable Depth β€” 3/4/5 levels or "Auto" (AI decides)
  • Multi-Provider β€” works with OpenAI, DeepSeek, Ollama, SiliconFlow, and any OpenAI-compatible API
  • Per-Mindmap Model β€” different mindmaps can use different models for generation

Mindmap Settings

πŸ’Ύ Local-First & Private

  • IndexedDB Storage β€” all data stays in your browser
  • No Backend β€” direct API calls from your browser
  • No Account Required β€” you own your data

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Chat Interface                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Sidebar  β”‚  β”‚ Messages  β”‚  β”‚   Mindmap Panel    β”‚  β”‚
β”‚  β”‚          β”‚  β”‚           β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚  β”‚
β”‚  β”‚ Sessions β”‚  β”‚ User/AI   β”‚  β”‚  β”‚ React Flow   β”‚   β”‚  β”‚
β”‚  β”‚ Mindmaps β”‚  β”‚ Markdown  β”‚  β”‚  β”‚ Canvas       β”‚   β”‚  β”‚
β”‚  β”‚          β”‚  β”‚ Selection β”‚  β”‚  β”‚ dagre Layout β”‚   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚  β”‚
β”‚                                β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚  β”‚
β”‚                                β”‚  β”‚ Corpus Panel β”‚   β”‚  β”‚
β”‚                                β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚  β”‚
β”‚                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                    Data Layer                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Provider β”‚  β”‚Conversationβ”‚  β”‚     MindMap        β”‚  β”‚
β”‚  β”‚  Store   β”‚  β”‚   Store    β”‚  β”‚      Store         β”‚  β”‚
β”‚  β”‚ (IDB)    β”‚  β”‚  (IDB)     β”‚  β”‚     (IDB)          β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚               AI Generation Pipeline                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Corpus   β”‚β†’ β”‚ Prompt    β”‚β†’ β”‚ OpenAI-compatible  β”‚  β”‚
β”‚  β”‚ Collectorβ”‚  β”‚ Builder   β”‚  β”‚ LLM API            β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                     ↓                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Validate │← β”‚ Parse /   │← β”‚ JSON / Markdown    β”‚  β”‚
β”‚  β”‚ & Apply  β”‚  β”‚ Increment β”‚  β”‚ Response           β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • An API key from any OpenAI-compatible provider (OpenAI, DeepSeek, Ollama, etc.)

Install & Run

git clone https://github.com/web4zn/progressive-mindmap.git
cd progressive-mindmap
npm install
npm run dev

Open http://localhost:5173, add your API provider in Settings, and start chatting. Create a mindmap from the sidebar to begin extracting knowledge!

Build

npm run build    # TypeScript check + production build
npm run preview  # Preview production build

πŸ§ͺ Development

npm test              # Run unit & component tests (131 tests)
npx tsc --noEmit      # Type check
npx vitest --watch    # Watch mode

πŸ—ΊοΈ Roadmap

  • LLM chat with multi-provider & streaming
  • AI mindmap generation (full rebuild)
  • Incremental update operations
  • Corpus curation & source tracking
  • React Flow canvas with dagre layout
  • IndexedDB persistence
  • Real-time streaming mindmap preview during generation
  • PNG / SVG / Markdown export
  • Keyboard shortcuts
  • Undo / Redo
  • Rich content in nodes (images, links, notes)
  • Plugin architecture
  • Multiple layout types (org chart, fishbone, timeline)
  • Theme system

🀝 Contributing

Contributions are welcome! See CONTRIBUTING.md for how to get started.

πŸ“„ License

MIT β€” see LICENSE for details.

About

Progressive Mindmap is a local-first web application that transforms your LLM conversations into structured, editable mindmaps.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors