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.

A reactive dot grid
Rope curves between notes
Grid-aligned dragging
Place, connect, zoom out. The arrangement is the argument.

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
Guest first, account later
Zoom to the whole board
Notes carry their own geometry

01 / 03

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.