120 000
Информационные технологии и интернет
Декабрь 2024
Требовалось перенести в онлайн живую офлайн-практику, где ключевую роль играет совместное взаимодействие двух человек за одним столом в реальном времени. Нужно было воспроизвести ощущение общего физического пространства: когда ведущий или клиент берет карту, она без задержки появляется, двигается и переворачивается у второго участника. При этом клиента нельзя обременять регистрацией, вход должен происходить по одной ссылке. Дополнительно бизнесу была необходима гибкая админ-панель для управления колодами, картами и языками интерфейса силами контент-менеджера, а также закрытая модель доступа по приглашениям.
Реализована веб-платформа на ASP.NET Core с серверным рендерингом и тонким клиентом. Сердцем продукта стал общий интерактивный стол, состояние которого синхронизируется между участниками по WebSocket-каналу на SignalR. Каждое действие (вытягивание набора карт из колоды, перемещение, поворот лицом вверх или вниз, увеличение, удаление, полная очистка стола) транслируется второму участнику в реальном времени с разделением ролей ведущего и клиента и разной видимостью элементов для каждой стороны.
Вход для клиента устроен предельно просто: переход по персональной ссылке вида /session/{hash} открывает стол без регистрации. Поскольку гостевая сторона не имеет постоянной привязки к аккаунту ведущего, ее события доставляются через серверную очередь команд, что гарантирует надежную доставку даже в обход прямой адресации SignalR.
Колоды и карты полностью управляются из админ-панели: загрузка изображений, добавление и удаление карт, переименование этапов. Локализация построена на динамической схеме, где добавление нового языка создает отдельную колонку в таблице переводов, а отсутствующие ключи дозаполняются автоматически при первом обращении. Благодаря этому контент-менеджер расширяет набор языков и правит тексты без единой строки кода и без передеплоя.
Офлайн-практика полностью перенесена в онлайн без потери ключевого сценария совместной работы за одним столом.
Подключение клиента занимает один переход по ссылке: ноль шагов регистрации и ноль установок, барьер входа снят.
Действия участников отражаются у второй стороны в пределах сотни миллисекунд, ощущение общего пространства сохраняется.
Семь тематических колод с сотнями карт управляются контент-менеджером самостоятельно, разработчик для этого не требуется.
Два языка интерфейса из коробки и неограниченное добавление новых без релиза, силами контент-команды.
История сессий со снимками раскладов позволяет возвращаться к прошлым встречам и отслеживать динамику клиента.
Двенадцать итераций схемы базы за время развития продукта прошли без простоев, миграции накатываются автоматически при старте приложения.
Закрытая модель доступа по инвайтам обеспечила контролируемый и управляемый рост базы пользователей.