Staff Frontend Architect · Design Document

Real-time
collaborative
infinite canvas.

A Miro/Figma-class whiteboard built on Yjs CRDTs, React Flow, and a purpose-built WebSocket sync service. Multiplayer cursors, conflict-free edits, and a 60 FPS viewport — with the full architecture documented inside the product.

Built with
Next.js 16TypeScriptTailwind CSSZustandYjs CRDTsy-websocketReact FlowFramer Motion
01

Component Hierarchy

Strict boundaries between the canvas engine, UI overlay, and networking layer — every file belongs to exactly one.

02

State Management

Zustand for ephemeral local state; Yjs CRDTs for replicated truth. Awareness for presence. Never the twain shall mix.

03

Real-Time Sync

Yjs nested maps, awareness protocol for cursors, Y.UndoManager for per-user undo that never clobbers peers.

04

60 FPS Canvas

React Flow virtualisation, rAF-throttled cursor broadcast, memoised node bodies, controlled state with no echo loops.

📝

Rich node types

Sticky notes, text, shapes, AI-generated images — all editable inline with live sync.

🔗

Smart connections

Drag-to-connect nodes with animated bezier edges, custom colours, and labels.

🎨

Templates & export

Start from flowchart, mindmap, or retro templates. Export your board as PNG.

8node types
7templates
60FPS viewport
0mssync latency
∞infinite canvas
Tip: open the canvas in two browser tabs to see live multiplayer cursors in action.