Real-time vector whiteboard,
executed on the edge.
Sub-16ms vector input, 15Hz presence, and SQLite persistence in every room. No sign-ups, no tracking cookies, and no compute spent while you draw alone.
Four subsystems, no framework in the middle.
Sub-16ms Vector Render Loop
Mesh splits rendering across two decoupled canvas surfaces. The committed buffer redraws strictly on shape additions or removals. Active drawing previews, live drag bounding boxes, and remote peer cursors execute on an overlay running at a locked 60fps.
Smoothing Algorithm
Ramer-Douglas-Peucker
Supported Primitives
7 Vector Tools
const points = ramerDouglasPeucker(rawStroke, 1.2);
const shape = { id, type: 'path', data: { points }
};
/* Geometry computation happens purely in the client worker thread, ensuring DO handlers stay ≤ 2ms */
Single origin. Zero external database dependencies.
Browser Client
Runs Svelte 5 with fine-grained reactivity ($state/$effect). Captures pointer events, smooths strokes with RDP, and renders optimistic updates locally.
Anycast Edge Worker
hooks.server.ts intercepts /api/room/:id/ws before page resolution, routing the raw upgrade to the dedicated room isolate via idFromName(roomId).
Durable Object & SQLite
One isolate per room. Accepts hibernating WebSocket connections, resolves LWW conflicts, and commits to single-tenant transactional SQLite storage.
Self-host in your own cloud or container.
git clone https://github.com/VUXXE/Mesh.git
cd Mesh
docker compose up -d