Dotvoid

Collaboration

Real-time on every document. Every field.

Yjs CRDTs and Awareness power every editable surface in Dotvoid, from the body to the headline to the planning slot.

Why every field

Headlines are the part people argue over.

Most editorial tools treat collaboration as a feature of the body editor. Headlines, bylines, planning slots, alt text - those are form inputs, last-write-wins, you-or-me-not-both. Two editors land on the same headline and one of them loses their change.

Dotvoid treats every editable surface as a Y.Text. Two cursors in the headline is the same primitive as two cursors in the body. The same applies to bylines, summaries, alt text, and any other field that takes more than a click. A planning desk where everyone edits in place feels different from one where everyone edits in turns.

Awareness

You can see who is where.

Every cursor on a document carries its editor's identity through Yjs Awareness. The chip in the corner of the doc lists who's in; named carets in each field show where they're working; presence chips on the list view show who's on what. Built on Textbit, our open-source editor, layered on Slate and slate-yjs.

  • CursorsIn the body, in the headline, in the lede, in every field.
  • PresenceChips on the document and on the list view.
  • UndoPer user, isolated from each other’s edits.
  • OfflineEdits reconcile cleanly when you come back.
  • UniversalArticles, planning items, newswire items - same model.

A small detail

The headline field is a Y.Text, too.

This sounds trivial. It is not. Treating the headline as a CRDT, not a form input, means two people can rewrite it at the same time without one overwriting the other. It is the same data structure as the body, the same Awareness, the same undo - just one node deep instead of a document deep.

Once you've had it, you notice every editor that doesn't.

Next step

Register and define one. You'll know in ten minutes whether it fits.