Back to articles
How I Built a CRDT Engine for a Collaborative Whiteboard in Rust

How I Built a CRDT Engine for a Collaborative Whiteboard in Rust

via Dev.to PythonRafa Calderon

I'm currently building a real-time collaborative whiteboard. Think of it as Figma's infinite canvas, but focused on stylus input and handwriting. Multiple users draw simultaneously, offline sessions sync on reconnect, and every stroke appears on everyone's screen without conflicts. Sounds simple. It isn't. After evaluating existing CRDT libraries, none of them modeled the domain correctly — they're built for text editors, not vector graphics. So I built vectis-crdt : a Rust library that compiles to both native and WebAssembly, with the server also consuming it in Rust. This is the story of why I made every design decision I made. The problem: three requirements that pull in opposite directions A real-time collaborative whiteboard has three fundamental constraints: Immediate local responsiveness : every stylus touch must appear on screen before any server round-trip. 80ms of latency between pen-down and pixel-rendered breaks the experience. Eventual convergence : two clients that have a

Continue reading on Dev.to Python

Opens in a new tab

Read Full Article
2 views

Related Articles