DR / / drodriguez.site
case study / / 04 / /

Real-time collaboration

Google Docs-style live editing

statuslive
stackYjs, Tiptap, y-websocket
updated2026
YjsWebSocketTiptapCRDT
01 / / the problem

Most "real-time" features on Upwork proposals are actually basic websocket chat. True collaborative editing with conflict resolution is meaningfully harder and pays accordingly.

02 / / what i built
Concurrent editing with no conflicts
Live cursor positions and selections per user
Presence indicators with avatars
Connection status (online/syncing/offline)
Anonymous mode for instant demo participation
Document sharing via link
Recent edits sidebar with attribution
03 / / how i built it
Yjs
Battle-tested CRDT library, used by Notion and Linear
Tiptap
ProseMirror editor with first-class Yjs integration
y-websocket
Standard transport for Yjs sync
Redis pub/sub
Horizontal scale path for websocket servers
04 / / live demo
→ open live demo at https://collab.drodriguez.site
Loom walkthrough — 90 seconds

Demo credentials shown on the demo's landing page.

05 / / production extensions

Things deliberately out of scope for the demo, but I'd add for production:

Persistent operation log for full version history
Comments and threaded discussion
Rich text formatting and embedded media
Permission model with read/write/comment roles