You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Enable real-time multi-user editing with cursor tracking, conflict resolution, and room-based workspaces. Transform Calca from a solo tool into a collaborative design platform.
User Story
As a team, we want to edit designs together in real-time, so we can iterate faster without exporting/importing files.
Scope
Real-time sync via WebSocket
Cursor presence (see other users' cursors)
Conflict resolution (OT or CRDT)
Room-based workspaces (shareable links)
Permission levels (owner, editor, viewer)
Tradeoffs / Optionality
Conflict Resolution: OT vs CRDT
Operational Transformation (OT):
Pros: Mature (Google Docs), good for text
Cons: Complex server logic, harder with structured data (frames, positions)
CRDT (Conflict-free Replicated Data Types):
Pros: Peer-to-peer friendly, simpler mental model, great for Figma-like apps
Cons: Memory overhead, harder to implement from scratch
Decision: CRDT recommended for frame-level data. Use yjs or automerge library. OT only if we need granular text collaboration within designs.
TL;DR
Enable real-time multi-user editing with cursor tracking, conflict resolution, and room-based workspaces. Transform Calca from a solo tool into a collaborative design platform.
User Story
Scope
Tradeoffs / Optionality
Conflict Resolution: OT vs CRDT
Operational Transformation (OT):
CRDT (Conflict-free Replicated Data Types):
Decision: CRDT recommended for frame-level data. Use
yjsorautomergelibrary. OT only if we need granular text collaboration within designs.Architecture: Central Server vs P2P
Central WebSocket Server:
P2P (WebRTC):
Decision: Central server for MVP. P2P as optimization later.
Technical Considerations
socket.ioyjsrecommended) for frame positions and propertiesReferences
docs/prd-v2.mdP1-1 (Multi-User Collaboration)