Pan, zoom, plus-handle spawn, action chips, detail view, themes, import, export, undo. Flow view puts link pickers on the line, not in a side panel.
// featured case study · original product · 2025
A mind map that feels like a hand.
Pan, zoom, snap.
A canvas we actually own. Nodes spawn, links pick from the middle of the line, and sync tells the truth about whether the page is saving. Sharing is a token you can rotate, not a hope.
- Product problem
- Iframed editors feel rented. Sharing is an afterthought.
- Canvas
- Hand-built pan, zoom, drag, spawn, and undo.
- Sync
- Debounced PATCH with honest saving / saved / retry states.
- Sharing
- Public, unlisted, private. Regenerable tokens.
// the product problem
Most mind maps are someone else’s iframe wearing your brand.
The rented editor cannot be keyboarded properly, cannot tell you if the save stuck, and treats a share link as a permanent leak. We wanted a canvas that feels physical under the cursor and a sharing model you can revoke.
// product decision
Write the canvas. Then make save and share first-class.
A few thousand lines of React replaced the iframe. Tab, Enter, Delete, F, Home, and Escape do what they should. Sync waits 800ms, then says saving, saved, or retry. Viewers get a read-only canvas. Owners can rotate the token.
Debounced PATCH. The indicator distinguishes in-flight, confirmed, and failed. No silent discards.
Visibility is public, unlisted, or private. Tokens rotate. Account deletion actually removes the auth row.
// the system
Next.js for the shell. Supabase for the room.
Auth is handled per page after an Edge middleware fight with __dirname. Sessions do not auto-refresh; it holds in practice. RLS policies were simplified after a circular read between mindmaps and collab.
- 01 Draw
The canvas component owns interaction. Keyboard shortcuts stay in the same place as the pointer.
- 02 Save
Debounced PATCH, visual save state, retry when the network sulks.
- 03 Share
Tokenized links, read-only viewers, OG images, and per-page social buttons.
- 04 Watch
Sentry on errors. Changelog cadence for the hand-tuned UX wins.
// the product, in frames
Screens from the shipped surface.
// what it holds
Proof, not adjectives.
The useful bits: what changed for the people using it, and what the stack actually is.
A canvas we can keyboard, theme, and undo without waiting on a vendor.
Rotate the token. Change visibility. Delete the account for real.
Flow view, OG images, Sentry, and founder pricing while beta stays free.
- Next.js
- TypeScript
- Supabase
- Vercel
- Sentry