Should I vibe code
Desktop and mobile mind maps, outlines, and presentation modes
A mind map without auto-layout is an org chart you drag by hand. The reflow nobody notices is the entire product.
?
Their verdict, the Premium price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.
?
Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.
The honest answer
why the verdict is what it is
Ask which Xmind you mean and the answer changes. The one in most people's heads is a desktop app that writes files to disk, and we already rated that shape SHIP IT on the MindNode page — one person, one machine, worst case a wasted Sunday. The one you can actually buy in 2026 counts your plan in online maps, sells real-time collaboration and thirty days of version history, and hands you AI credits by the month. Building that second thing is not a weekend, and the specific reason is duller than the collaboration story: it is layout. What makes a mind map feel like a mind map is that the tree reflows as you type — siblings stay ordered, branches never overlap, the whole thing rebalances and animates, and nobody notices it happening. Skip it and you have a canvas of draggable boxes that looks fine with nine nodes and becomes manual labour at ninety. Add the second device and you have signed up for a sync engine as well, at which point the honest question is whether you wanted to think in maps or to build one.
What actually breaks
not "if". the specific failures.
- Auto-layout, at around a hundred nodes, when branches start overlapping and the fix is a real algorithm rather than a nudge to the spacing constant
- The file format, if you invented one, because a map only your app can open is a thought you can no longer retrieve
- Sync, the moment the second device exists — two edits to the same subtree is not a text merge and last-writer-wins silently eats a branch
- Undo, which has to unwind a layout pass as well as a data change, and which is the feature everyone assumes is free
- Export fidelity, where the PNG looks right and the PDF has clipped the rightmost branch that ran off the page
- Large maps in the browser, when every keystroke triggers a full relayout and typing starts lagging behind your fingers
- The mobile version, which is a different interaction model entirely — pinch, drag and a keyboard covering the node you are editing
- Attachments and images, which are the reason the tidy JSON file becomes a zip archive with a manifest and a whole new class of bug
Is that you?
the verdict is a default, not a law
- It is one person on one machine writing files to a folder you can see in Finder
- The on-disk format is something else's — OPML, Markdown outline, or the .xmind zip itself, which is JSON in a container
- You took the layout from a library that already does it rather than writing a tree layout from scratch
- The maps are for thinking, and losing one would cost you an afternoon rather than a project
- Two people need to edit the same map, which is the collaborative product and a genuinely different build
- It must sync across desktop and phone and nobody has decided what happens to a conflicting edit
- It stores the only copy of anything, in a format with no importer but yours
- You are doing it to avoid a subscription that costs less than ten dollars a month
If you build it anyway
the checklist, then the prompt that enforces it
- Pick an existing layout engine before you pick anything else. Mind Elixir in the browser or Freeplane's model as a reference — auto-layout is the feel of the product and writing it yourself is the whole project rather than a step in it.
- Save to an interchange format from the first commit. OPML or an indented Markdown outline covers the structure; if you need more, write the .xmind zip, which is JSON and documented.
- Autosave to a new file and keep the last N versions on disk. A layout bug that corrupts a map is one bad write away, and version history is the cheapest insurance there is.
- Make export a first-class feature with a test: render a fixture map to PNG, SVG and PDF in CI and eyeball the results. Clipped branches are the classic silent failure.
- Keep the document model separate from the layout. Nodes, parents and ordering are the data; positions are derived and should be recomputable from scratch at any time.
- Profile relayout at 500 nodes early. If a keystroke is doing a full-tree pass, you will find out on the day the map is finally big enough to matter.
- If sync appears, do it properly with a CRDT or do not do it at all. Last-writer-wins on a tree is not a merge strategy — it is a delete you did not authorise.
I want to build a mind mapping app. It is for my own thinking, on my own
machine. Keep it that way, and keep me out of the two holes this category
digs: bespoke file formats and hand-rolled layout.
1. Before any UI, define the document model: nodes with ids, parent, ordering,
text, notes, and nothing about pixels. Positions are always derived.
2. The save format is an existing one. Default to OPML or indented Markdown.
If I need images and styles, write the .xmind zip format rather than
inventing a container. Refuse to design a new format for me.
3. Round-trip test first: load a fixture, save it, reload it, assert the tree
is identical. That test guards everything else.
4. Use an existing auto-layout implementation. If I ask you to write a radial
tree layout from scratch, push back and tell me it is the majority of the
work and the entire perceived quality of the app.
5. Autosave to a new file on a timer and keep the last 20 versions in a
sibling directory. Never overwrite the only copy in place.
6. Undo is a stack of document operations, not of rendered states. Get it
working before styling anything.
7. Export to PNG, SVG and PDF with a CI test that renders a fixture map and
fails on clipped bounds. Clipped rightmost branches are the standard bug.
8. Benchmark a full relayout at 500 nodes before adding features. If a
keystroke triggers a whole-tree pass, tell me now rather than at 500 nodes.
9. No accounts, no server, no sharing. Files on disk in a folder I choose.
10. If I ask for real-time collaboration, stop and explain that two people
reparenting the same node is a cycle rather than a conflict, that this
needs a CRDT, and that it is a separate project with a separate name.
11. Out of scope: presentation mode, Gantt charts, task assignment and AI
generation of maps. Those are the paid product's upper tiers.
12. Finish by telling me which existing app already opens my chosen format, so
I can leave at any time.That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.
their build prompt ↗Or don’t build it
the boring option, and the way back out
If you want the collaborative product, buy it — around eight dollars a month for Premium, and what it covers is real-time editing, version history and sync across desktop, web and phone, all of which are months of work and none of which is interesting work. Also buy it if presentation mode is why you are here: turning a map into slides is the kind of polish nobody finishes at home. Build your own only for the local, single-user, files-on-disk version — and read the MindNode entry first, because that version is genuinely a fine thing to build and we said so there.
$8.25/mo is cheaper than your weekend.
There barely is one if you get the format right, and that is the whole trick. Write OPML, indented Markdown or the .xmind zip and every map you make is openable by Xmind, MindNode, Freeplane and any outliner on the day you delete your app. Write a bespoke JSON schema and the exit is a converter you will have to write while annoyed. Keep images and attachments beside the document rather than embedded as base64, keep autosave versions on disk, and the migration is a copy command rather than a project.
Actively developed browser mind-map core with the auto-layout and interaction model already solved.
Long-running open-source desktop mind mapper, and a useful reference for how the document model and layout separate.
Questions
MindNode is SHIP IT and this is DEMO ONLY. They're both mind mappers.
They are, but they are not the same build. The MindNode entry is about the local, single-user, files-on-disk version, and that really is a good weekend with a small downside. Xmind's paid tiers are counted in online maps and sold on real-time collaboration, cross-device sync and version history — the moment your build includes any of those, the weekend estimate is wrong by an order of magnitude. If what you want is the local one, follow the MindNode advice and ignore this page.
Is auto-layout really that hard?
Writing something that positions a tree is easy. Writing something that keeps siblings in the order you dragged them into, never overlaps two branches, rebalances as subtrees expand, animates the change so you can follow it, and does all of that fast enough to run on every keystroke — that is the hard version, and it is the one users are comparing you against without knowing they are. Take it from a library. Every hour spent there is an hour not spent on the app.
What is the smallest version worth having?
An outliner that renders. Keep the document as an indented Markdown file, render it with an existing layout engine, add keyboard navigation and export to PNG and SVG. That is an evening, it opens in three other applications, and it covers the actual use case — thinking — without you owning a file format, a sync engine or anyone else's data.
Every week, someone ships something they shouldn’t have.
New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.
The mind map is an afternoon. Making one node behave as a branch, a card and a Gantt bar is the actual product.
Worst case here is a wasted Sunday. The one lasting mistake is inventing a file format only your app can read.
Two people reparenting the same node isn't a merge conflict, it's a cycle. That's the product you'd be building.
last reviewed 2026-08-05 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice