CanVas
Realtime rooms pairing a live document with a live drawing canvas. No accounts, no passwords.
Live presence, simulated. Both surfaces are bound to the same Yjs document.
Why two surfaces and not one
Text flows; canvas is spatial. Cramming both into one editor makes a bad version of each — you get sticky notes, or inline clip-art.
So CanVas keeps them as two purpose-built surfaces bound into one synchronised room: a BlockNote block editor and an Excalidraw infinite board, both writing into the same Yjs doc.
Each room slug is its own Durable Object, persisting the Yjs doc to DO storage — so a room survives with zero connected clients.
The hard part
Different people can be on different surfaces at the same time and still see each other. That only works because presence lives on the shared document rather than on either editor.
co-canvas
A pixel-art editor whose document is JSON a human can read and hand-edit — and an AI can rewrite.
continue