Project
Roulette

Collaborative Whiteboard

Two people drawing on one canvas, in sync.

AdvancedWeb appCreative14–30hAI-buildable 3/5no setupworth shipping

A shared drawing surface where strokes from everyone appear live. Sending every pointer event floods the connection, so strokes need batching and simplification — and remote strokes still have to look smooth when they arrive as a handful of points.

UI
Logic
Useful

Hosting · Free forever

Deploys free on GitHub Pages, Cloudflare Pages or Vercel Hobby.

Deploy it and share a link.

Core features · 7

  • A shared canvas where all participants can draw
  • Strokes appear live for everyone
  • Colour and brush size per participant
  • Strokes are batched and simplified before sending
  • Remote strokes render smoothly despite arriving as sparse points
  • Undo removes only your own last stroke
  • New joiners receive the existing board state

The interesting part

  • Simplifying a stroke path without visibly changing its shape
  • Per-participant undo when strokes interleave
  • Sending board history to a late joiner without a huge initial payload

Once it works

  • Add shapes and text alongside freehand
  • Add infinite canvas with pan and zoom
  • Add an export to PNG

Suggested stack

reacttypescripttailwindcanvas-apisupabase

Track it