Skip to content

Releases

v1.0.0 — Serverless Real-Time Collaborative Whiteboard

Choose a tag to compare

@VUXXE VUXXE released this 19 Sep 08:04
0851606

Mesh v1.0.0 — Serverless Real-Time Collaborative Whiteboard

Mesh is a full-stack, serverless, real-time collaborative vector canvas application built with SvelteKit, Svelte 5 (Runes), and Cloudflare Workers (Durable Objects + WebSocket Hibernation + embedded SQLite).

🎨 Canvas & Drawing Engine

  • Dual-Layer Rendering: Static buffer canvas for persisted shapes + interactive overlay canvas running at 60fps.
  • Vector Primitives: Freehand pen drawing (with client-side Ramer-Douglas-Peucker path simplification), rectangles, ellipses, inline editable text boxes, sticky notes, and arrows/lines.
  • Selection & Transforms: Multi-shape marquee selection, drag bounding boxes, and 8-handle aspect-ratio/freeform resizing.
  • Undo / Redo: Full client-side history stack with keyboard shortcuts (Cmd/Ctrl + Z, Shift + Cmd/Ctrl + Z).
  • Export & Import: Export canvas to PNG, SVG, or JSON, with local JSON file import and hydration.
  • Interactive Radar: MiniMap radar component for canvas overview and panning navigation.

⚡ Real-Time Edge Synchronization

  • Durable Object Rooms: Single-origin architecture where each room is an isolated actor instance backed by embedded SQLite.
  • Monotonic LWW Concurrency: Idempotent last-write-wins conflict resolution with atomic RETURNING * upserts.
  • Ephemeral Presence: Live multiplayer remote cursors and selection highlights with client-side dead reckoning.

🚀 Cloudflare Free Tier Optimizations

  • Zero Idle Burn: Leverages WebSocket Hibernation API; isolates hibernate immediately with no active JS timers.
  • SPA Shell (ssr = false): Static assets served directly from Cloudflare Edge CDN cache at 0 Worker request invocations.
  • Adaptive Presence: Cursor broadcast suspended on tab backgrounding/blur; coordinates compressed to 1 decimal place.

🛡️ Room Privacy & Security

  • Room Passwords: Optional room protection with client-side PBKDF2 hashing (100k iterations) and constant-time comparison.
  • Abuse Protection: 150 msg/s sliding-window rate limit, frame size cap at 64KB, and auto-pruning.