Описание проекта
Внутри слияние должно быть бесконфликтным, поэтому мы ждём движок на CRDT или операционных преобразованиях, а не наивную схему «побеждает последний». Одновременные правки с разных клиентов обязаны сходиться к абсолютно одинаковому итоговому состоянию на каждой машине независимо от порядка доставки пакетов и задержек сети. Для нас важна работа офлайн: пользователь, потерявший связь, должен продолжать редактировать локально, а его изменения — автоматически согласовываться при восстановлении соединения, без диалога слияния и без потери набранных символов. Нужна и полная история версий с именованными снимками, наглядной лентой правок и возможностью восстановить или сравнить любую прежнюю ревизию.
Транспорт следует построить на WebSocket с автоматическим переподключением и обработкой обратного давления, а вся система обязана масштабироваться на множество документов и множество одновременных редакторов так, чтобы сервер не превращался в узкое место. Просим отнестись к этому как к продакшн-работе: нам важны чистые API, тесты вокруг логики слияния и понятная документация, чтобы наша команда могла сопровождать проект дальше.
— Живые курсоры, выделения и индикатор присутствия по каждому пользователю
— Движок слияния CRDT/OT с гарантией сходимости
— Редактирование офлайн с автоматическим согласованием при переподключении
— Встроенные комментарии, ветки обсуждений и полная история версий