Unidraw — путь длиной в два года

Привет! Я Георгий, разработчик команды, которая создавала Unidraw. Расскажу историю о том, как мы искали инструмент для совместных сессий на виртуальной доске. Сначала развернули опенсорсное решение, но потом у нас так выросла нагрузка, что пришлось писать свое. Статья — о том, как начинался продукт, какой он сейчас и каким мы хотим видеть его в будущем. Будут технические данные, красивые шаблоны и история нашей главной ошибки.
Поиск подходящих решений
Мы постоянно используем сервисы с виртуальными досками, остановились на одном варианте, но с 2022 года искали альтернативу. Для нас важно, чтобы мы могли:
- Проводить ретроспективу
- Делать быстрые наброски мокапов, которым не нужна дизайнерская проработка
- Рисовать архитектурные схемы для обсуждения
- Проводить онлайн-встречи с визуализацией артефактов
- Обучать коллег
Рассматривали разные варианты, в том числе BoardOs, но когда связались с ними, они ответили, что не планируют развитие для России, и локализуют свое приложения только для Китая.
У найденных решен ий были ограничения по количеству доступов к доскам, или они решали узкоспециализированные задачи.
В это же время пришла помощь от наших архитекторов, которые показали проект Open Source с P2P-шифрованием передачи данных. Мы решили на его основе поднять свой сервис-аналог с возможностью делиться ссылками, сохранять результаты в кабинете на сервере и добавлять реципиентов к контенту доски.
Open-source-решение предлагало:
- одну доску максимум;
- поддержку коллективных сессий;
- хранение доски в браузере пользователя.
Технические детали решения:
- socket.io для синхронизации изменений между пользователями;
- нет единого источника правды: все клиенты хранят состояние доски у себя;
- на клиенте есть механизм Reconciliation, который умеет мержить изменения от разных пользователей;
- обновление доски привязано к жизненному циклу React.