Collaborative whiteboard
advanced6 to 8 weeksTypeScriptNode.js
Multiple people draw on a shared canvas in real time, with undo and offline tolerance.
Why build it
Conflict resolution is the hard part. Building it on a CRDT or operational model teaches distributed-state ideas you can discuss in interviews.
Features
- Shared canvas with shapes and freehand
- Live cursors
- Per-user undo
- Reconnect without losing edits
- Board persistence
Roadmap
- p1
Single-user canvas
- Canvas rendering loop with hit testing
- Shape model and selection
- Local undo stack
- p2
Sync model
- Choose CRDT (Yjs or Automerge) or build last-writer-wins and compare
- Server relay over WebSockets
- Cursor presence
- p3
Resilience
- Offline edits merge on reconnect
- Snapshot and compaction
- Fuzz test with random concurrent edits
- p4
Scale and ship
- Load test 50 users per board
- Persist to object storage or Postgres
- Write an architecture doc
Common pitfalls
- Syncing whole-document state on every change
- Sharing one undo stack across users
Skills you will practise
- CRDTs
- WebSockets
- Canvas
- Fuzz testing