Real-time Collaborative Editor
An exploration of CRDTs and operational transforms for building Google Docs-style collaborative editing experiences. I wanted to understand the offline story end to end, not just the happy multiplayer path. This prototype runs on Y.js with a tiny WebSocket relay, persists everything to IndexedDB on the client, and reconciles edits when you come back online. The interesting work is in the seams: presence, undo, and how you tell a user that their last 12 minutes of typing just collided with someone else's.
What this is
A lab, not a product.
An exploration of CRDTs and operational transforms for building Google Docs-style collaborative editing experiences. I wanted to understand the offline story end to end, not just the happy multiplayer path. This prototype runs on Y.js with a tiny WebSocket relay, persists everything to IndexedDB on the client, and reconciles edits when you come back online. The interesting work is in the seams: presence, undo, and how you tell a user that their last 12 minutes of typing just collided with someone else's.
Features
Learnings
Technologies
Capabilities
What it does
The features that actually got built and run in this prototype.
The stack
What it is built with
The libraries and runtimes I picked for this lab and why they earned their place.
What I learned
Learnings, in order of how much they surprised me
The things I would tell another engineer before they tried the same experiment.
Note: This is an experimental project in the alpha stage. It is a learning exercise and technical exploration rather than a production-ready solution. Patterns and code may change.
Real-time
Related labs
Other explorations in this area.
Want me to build something like this for you?
If this kind of work fits your roadmap, I take on a small number of paid projects each quarter.