Repository navigation
Releases
Releases · VUXXE/Mesh
v1.0.0 — Serverless Real-Time Collaborative Whiteboard
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.