Комнаты встреч и резюме
Видеовстречи на LiveKit + webedge-db — realtime-комнаты, запись (LiveKit Egress) и итоги после звонка.
Dev-storyЗадача
После звонка решения и задачи исчезают в истории переписки или в ничьих заметках.
Что делали
Приложение встреч на Vue 3 + webedge-db, использующее LiveKit для WebRTC-видео, управление комнатой и экспорт записи (egress), плюс шаг recap, превращающий запись в резюме решений и действий после звонка.
Результат
Звонок идёт в настоящей комнате, записывается и оставляет резюме, к которому можно вернуться, а не перематывать всю транскрипцию.
Dev-story статья
Комнаты встреч и резюме: как создавался проект
Системе нужны были собственные видеовстречи, а не ссылка на чужой продукт, чтобы личность, календарь и доступ организации проходили напрямую. Загвоздка в том, что бэкенд крутится на двухъядерной arm-коробке: не было запаса CPU под серверную компоновку видео и никакого желания перезапускать медиасервер ради каждой записи. Это ограничение определило почти каждое решение здесь.
Разделы
05
Модули
05
Стек
TypeScript + Vue 3
Почему появился проект
После звонка решения и задачи исчезают в истории переписки или в ничьих заметках.
Системе нужны были собственные видеовстречи, а не ссылка на чужой продукт, чтобы личность, календарь и доступ организации проходили напрямую. Загвоздка в том, что бэкенд крутится на двухъядерной arm-коробке: не было запаса CPU под серверную компоновку видео и никакого желания перезапускать медиасервер ради каждой записи. Это ограничение определило почти каждое решение здесь.
Что было создано
Приложение встреч на Vue 3 + webedge-db, использующее LiveKit для WebRTC-видео, управление комнатой и экспорт записи (egress), плюс шаг recap, превращающий запись в резюме решений и действий после звонка.
LiveKit SFU обрабатывает медиа, а наш реактивный бэкенд (webedge-db) ведёт состояние комнат, чат, участников и проверки доступа, поэтому панели обновляются вживую без опроса. Запись выполняется компоновкой плиток всех участников в сетку прямо в браузере модератора и смешиванием звука там же, а серверный путь LiveKit Egress оставлен как альтернатива. После звонка сводки вытягивают пункты действий из транскрипта и чата.
Основные модули и путь пользователя
Работающий в браузере рекордер, который раскладывает видео каждого участника в canvas-сетку в стиле Google Meet и через WebAudio смешивает весь звук, вживую пересобирая плитки и аудиограф при входе и выходе людей — единственный путь, подходящий для двухъядерного хоста без свободного CPU
Управляющий слой записи LiveKit Egress, загружающий готовые файлы в S3, оставлен как серверная альтернатива с предварительной проверкой развёртывания
Сводки после звонка, которые извлекают и дедуплицируют пункты действий из транскрипта и чата с помощью сигнальных эвристик (follow-up, следующий шаг, ответственный, фразы со сроками), а не LLM
Realtime-панели комнаты — список участников, чат, статус комнаты — подписанные на обновления бэкенда, поэтому остаются живыми без опроса
15-минутный cron-обход, автоматически завершающий брошенные живые комнаты, чей хост закрыл вкладку, финализируя дочерние breakout-комнаты и активные записи, чтобы статус и посещаемость оставались чистыми
Архитектура и технологические решения
Сделано на TypeScript, Vue 3, Media workflows.
LiveKit SFU для медиа с записью на стороне браузера через canvas/WebAudio (LiveKit Egress в S3 как альтернатива), наш реактивный бэкенд для realtime-состояния, сессионной аутентификации, cron-задач и связки с календарём, самостоятельно размещено на двухъядерной arm-коробке, фронтенд на Cloudflare Pages.
Результат и выводы
Звонок идёт в настоящей комнате, записывается и оставляет резюме, к которому можно вернуться, а не перематывать всю транскрипцию.
Рабочий самостоятельно размещённый стек встреч, который записывает и составляет сводки на ограниченном железе и привязывает каждого участника к его залогиненному профилю в системе — сводки это честное извлечение по ключевым сигналам, а не магия ИИ.
Связанные статьи
Читать дальше
Связанные истории проектов
Эти проекты близки по техническим или продуктовым решениям и показывают, как тот же принцип работает в другом контексте.
Dev-storyCMS
Динамический headless-CMS на webedge-db — типы контента, медиа, роли и публичный read-API, питающий наши сайты и статьи.
Dev-storyСайт Vilniaus Verinelis
Небольшой быстрый статический сайт детсада Vilniaus Verinėlis.
Dev-storyПлатформа календарных бронирований
Бронирование на Vue 3 — слоты, записи, письма и Meet-видеозвонки в один клик.
Есть похожая идея?
Обсудить проект