NoteTakerXX
Spatial note-taking — notes placed on a dot grid and linked with rope curves.
- Services
- Product DesignEngineering
- Industries
- Dev Tools
- Tools
- TypeScriptCanvas
- Highlight
- Notes have coordinates.
- Live
- rein-note.vercel.app
Notes have coordinates
Every note app is a list. Lists are excellent for things that are genuinely sequential and quietly terrible for everything else — because the moment you have twenty notes, the relationship between them is the information, and a list has nowhere to put it.
So the notes get coordinates. An infinite canvas with a dot grid, notes you place where they belong relative to each other, and curved rope lines drawn between the ones that are connected.
Where the spatial part actually lives
A note carries its position, dimensions, colour, rotation, content and metadata — so the arrangement is data, not view state, and it survives a reload on another machine. That distinction is the whole project: a canvas that forgets where you put things is a drawing, not a document.
Dragging is grid-aligned so a board stays legible without anyone tidying it, and the zoom is Excalidraw-style because that is the interaction people already have in their hands.
Guest notes live in localStorage and stay tied to that browser profile until they are merged into an account.
- Canvas
- Infinite, free-formReactive dot gridGrid-aligned drag
- Connections
- Shift-click to linkRope-style curvesClient state today
- Data
- Supabase PostgresCoordinates and rotation storedRLS on profiles
- Stack
- Next.js 16React 19Zustand@use-gesture/react
What it cost
Guest mode is a data-migration problem wearing a friendly hat. Letting someone use the thing before signing up means their notes exist in localStorage under no user, and the merge into an account has to happen exactly once, without duplicating and without losing the ones made in the tab that was open at the time.
Gesture handling on an infinite canvas is the other quiet cost: pan, zoom, drag-a-note and drag-a-connection all start as a pointer going down, and telling them apart cleanly is most of the interaction code.
Where it does not work yet
The connections between notes — the rope curves, the thing that makes it spatial rather than just scattered — currently live in client state for the active session and do not persist to Supabase. Reload and the notes are where you left them; the lines between them are not.
That is the next thing, and it is worth naming because it is the gap between what the project demonstrates and what it claims.