SketchSync
Realtime whiteboard. Raw WebSockets.
Live · raw WebSockets · Updated 2026
TypeScript · WebSocket · React
Hosted on Render. The first open may take up to about 60 seconds; the proof below remains available immediately.
- Context
- Independent realtime-systems project · 2026
- My role
- Protocol designer and sole engineer
- Team
- Solo build
- Evidence
- Typed raw WebSockets · per-user undo
01 Problem
A whiteboard that hides behind Socket.IO does not show whether rooms, undo, or presence are actually correct.
02 Constraints
- 01Raw WebSockets.
- 02Per-user undo.
- 03Room logic unit-tested without the browser.
03 Architecture
04 Decisions
No Socket.IO.
Why The message protocol is the product.
Tradeoff More plumbing. Clearer tests.
05 Failure
Two users undo.
Undo is per-user, not a shared stack.
06 Object
07 Inspect
08 What I would improve next
- Persist room snapshots and replay deltas so reconnecting clients recover without losing the board.
- Define ordering and conflict semantics explicitly before moving from per-user actions toward CRDT or OT collaboration.
- Load-test fan-out, slow consumers, and backpressure across multiple room-server instances.