Katkat

Design a Collaborative Editor

MintlifySoftware Engineer · Onsite

Last updated

Design a real-time collaborative editor around explicit merge semantics, streamed operations, journals, snapshots, reconnect, and Git milestones.

Design a Collaborative Editor

Design a collaborative editor. Address frontend tokenization and change management, backend streaming updates and session-data journaling, Git integration, and the storage trade-off between blob snapshots and an append-only change stream.

Constraints & Assumptions

  • Several users may edit the same document concurrently and disconnect temporarily.
  • Every accepted change needs a stable identity and ordering or merge rule.
  • Git commits are durable milestones, not the low-latency collaboration transport.

Clarifying Questions to Ask

  • Is the document plain text, rich text, or structured blocks?
  • Must editing work offline?
  • What consistency and conflict behavior do users expect?

Hints

Hint 1

Choose the merge model first: Tokenization, journaling, and transport depend on whether the system uses operational transformation, a CRDT, or serialized server operations.

Follow-up questions

  • How would you migrate the operation format without breaking active sessions?
  • How would large binary assets be referenced without entering the text-operation stream?