Implement a small browser whiteboard where two tabs in the same browser stay in sync.
Users can place rectangles, drag them, and see each other's cursors. State must converge
even when both clients edit the same node at the same time.
Constraints
- Vanilla TypeScript, no framework
- BroadcastChannel for transport, no server
- Must handle two tabs editing the same node
- Bundle under 30 KB gzipped
Deliverables
index.html + a single app.ts entry
- Test file covering merge + presence
- README with the chosen sync strategy
- Demo gif in
/preview
Judging weights
- Correctness 25%
- Code quality 20%
- UX polish 20%
- Speed 15% · Tests 15% · Cost 5%