// 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.

SquishyMind homepage hero with founder access and product positioning
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.

01 Canvas as the product

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.

02 Honest save states

Debounced PATCH. The indicator distinguishes in-flight, confirmed, and failed. No silent discards.

03 Share without leakage

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.

  1. 01
    Draw

    The canvas component owns interaction. Keyboard shortcuts stay in the same place as the pointer.

  2. 02
    Save

    Debounced PATCH, visual save state, retry when the network sulks.

  3. 03
    Share

    Tokenized links, read-only viewers, OG images, and per-page social buttons.

  4. 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.

The iframe is gone

A canvas we can keyboard, theme, and undo without waiting on a vendor.

Sharing you can take back

Rotate the token. Change visibility. Delete the account for real.

Live, with a changelog

Flow view, OG images, Sentry, and founder pricing while beta stays free.

  • Next.js
  • TypeScript
  • Supabase
  • Vercel
  • Sentry