A fast, offline-first mind mapping application. Create, organise, and navigate complex idea trees — no account, no internet connection, no data leaving your machine.
Built with Next.js 14, React Flow, Prisma, and SQLite.
- Offline-first — All data stored locally in SQLite. No cloud, no account required.
- Hierarchical maps — Unlimited parent/child depth with automatic tree layout
- Layout modes — Top-down, left, right, or bidirectional orientations
- Node search — Press Ctrl+F to find and navigate to any node instantly
- File attachments — Attach images and documents directly to nodes
- Collapse/expand — Hide subtrees to reduce visual noise
- Auto-arrange — One-click hierarchical layout
- Colour coding — Per-node visual customisation
| Browser | Version |
|---|---|
| Chrome | 90+ |
| Edge | 90+ |
| Firefox | 88+ |
| Safari | 14+ |
Requires ES2020 and the File and localStorage APIs.
Prerequisites: Node.js 18+, npm (or pnpm)
# Clone the repository
git clone https://github.com/TX-220/dendrite.git
cd dendrite
# Install dependencies
npm install # or: pnpm install
# Set up environment
cp .env.example .env
# Initialize the database
npx prisma migrate dev --name init
# Start the development server
npm run devOpen http://localhost:3005 in your browser.
| Action | How |
|---|---|
| Create a map | Click Create Project on the home screen |
| Add a root node | Right-click canvas → Add Root Node, or press Ctrl+A |
| Add a child node | Right-click a node → Add Child Node |
| Edit a node | Double-click the node label |
| Search nodes | Ctrl+F — type to filter, Enter to cycle to next, Shift+Enter to previous |
| Attach a file | Right-click a node → Attach File |
| Auto-arrange | Toolbar → Auto-Arrange |
| Navigate canvas | Scroll to zoom, drag to pan |
Dendrite is fully offline and self-contained.
- Maps and nodes — Stored in a local SQLite database (
prisma/dev.db) - Attached files — Stored in
public/uploads/on your local machine - No external communication — No data is ever sent to external servers
- No analytics or tracking — No telemetry, tracking pixels, or third-party services
Your data never leaves your machine.
Dendrite uses SQLite, which has no meaningful size ceiling for personal use:
| Metric | Limit |
|---|---|
| Database file size | Limited by your local machine's storage capacity (SQLite theoretical max is 281 TB, but practically limited to available disk space) |
| Number of maps | Unlimited |
| Nodes per map | Unlimited; smooth up to ~500, usable beyond |
| Node label length | Unlimited (stored as text) |
| Edges per map | Unlimited |
Performance notes:
- Maps with < 200 nodes render and animate smoothly at all times
- Maps with 200–500 nodes may have slight layout-calculation delays (~0.5–1s on auto-arrange)
- Maps with 500+ nodes are supported but layout recalculation becomes noticeably slower; consider splitting into sub-maps
Files are written directly to your local filesystem:
| Metric | Limit |
|---|---|
| Individual file size | No enforced limit — constrained only by disk space |
| File types | All types accepted (images, PDFs, documents, archives, etc.) |
| Files per node | Unlimited |
| Total attachment storage | Constrained only by available disk space |
Note: Large files (> 100 MB) may cause slow uploads in development mode (
npm run dev) due to Next.js request buffering. For heavy file use, run a production build (npm run build && npm start).
To back up all data:
# Copy the database
cp prisma/dev.db prisma/dev.db.backup
# Copy all file attachments
cp -r public/uploads/ ~/dendrite-uploads-backup/To restore, place both back in their original locations and restart the app.
npm run dev # Dev server (port 3005)
npm run build # Production build
npx prisma studio # Visual database browser
npx prisma migrate dev --name <migration-name> # Create a schema migrationTX-220 — Concept, design, direction. Claude (Anthropic) — Implementation. Claude Code & — Development. Gemini (UI/styling)
MIT — See LICENSE file for details.







