Все проекты

Комнаты встреч и резюме

Видеовстречи на LiveKit + webedge-db — realtime-комнаты, запись (LiveKit Egress) и итоги после звонка.

TypeScriptVue 3Media workflows
Скриншот звонка WebEdge MeetDev-story
01

Задача

После звонка решения и задачи исчезают в истории переписки или в ничьих заметках.

02

Что делали

Приложение встреч на Vue 3 + webedge-db, использующее LiveKit для WebRTC-видео, управление комнатой и экспорт записи (egress), плюс шаг recap, превращающий запись в резюме решений и действий после звонка.

03

Результат

Звонок идёт в настоящей комнате, записывается и оставляет резюме, к которому можно вернуться, а не перематывать всю транскрипцию.

Dev-story статья

Комнаты встреч и резюме: как создавался проект

Системе нужны были собственные видеовстречи, а не ссылка на чужой продукт, чтобы личность, календарь и доступ организации проходили напрямую. Загвоздка в том, что бэкенд крутится на двухъядерной arm-коробке: не было запаса CPU под серверную компоновку видео и никакого желания перезапускать медиасервер ради каждой записи. Это ограничение определило почти каждое решение здесь.

Разделы

05

Модули

05

Стек

TypeScript + Vue 3

01

Почему появился проект

После звонка решения и задачи исчезают в истории переписки или в ничьих заметках.

Системе нужны были собственные видеовстречи, а не ссылка на чужой продукт, чтобы личность, календарь и доступ организации проходили напрямую. Загвоздка в том, что бэкенд крутится на двухъядерной arm-коробке: не было запаса CPU под серверную компоновку видео и никакого желания перезапускать медиасервер ради каждой записи. Это ограничение определило почти каждое решение здесь.

02

Что было создано

Приложение встреч на Vue 3 + webedge-db, использующее LiveKit для WebRTC-видео, управление комнатой и экспорт записи (egress), плюс шаг recap, превращающий запись в резюме решений и действий после звонка.

LiveKit SFU обрабатывает медиа, а наш реактивный бэкенд (webedge-db) ведёт состояние комнат, чат, участников и проверки доступа, поэтому панели обновляются вживую без опроса. Запись выполняется компоновкой плиток всех участников в сетку прямо в браузере модератора и смешиванием звука там же, а серверный путь LiveKit Egress оставлен как альтернатива. После звонка сводки вытягивают пункты действий из транскрипта и чата.

03

Основные модули и путь пользователя

M01

Работающий в браузере рекордер, который раскладывает видео каждого участника в canvas-сетку в стиле Google Meet и через WebAudio смешивает весь звук, вживую пересобирая плитки и аудиограф при входе и выходе людей — единственный путь, подходящий для двухъядерного хоста без свободного CPU

M02

Управляющий слой записи LiveKit Egress, загружающий готовые файлы в S3, оставлен как серверная альтернатива с предварительной проверкой развёртывания

M03

Сводки после звонка, которые извлекают и дедуплицируют пункты действий из транскрипта и чата с помощью сигнальных эвристик (follow-up, следующий шаг, ответственный, фразы со сроками), а не LLM

M04

Realtime-панели комнаты — список участников, чат, статус комнаты — подписанные на обновления бэкенда, поэтому остаются живыми без опроса

M05

15-минутный cron-обход, автоматически завершающий брошенные живые комнаты, чей хост закрыл вкладку, финализируя дочерние breakout-комнаты и активные записи, чтобы статус и посещаемость оставались чистыми

04

Архитектура и технологические решения

Сделано на TypeScript, Vue 3, Media workflows.

LiveKit SFU для медиа с записью на стороне браузера через canvas/WebAudio (LiveKit Egress в S3 как альтернатива), наш реактивный бэкенд для realtime-состояния, сессионной аутентификации, cron-задач и связки с календарём, самостоятельно размещено на двухъядерной arm-коробке, фронтенд на Cloudflare Pages.

05

Результат и выводы

Звонок идёт в настоящей комнате, записывается и оставляет резюме, к которому можно вернуться, а не перематывать всю транскрипцию.

Рабочий самостоятельно размещённый стек встреч, который записывает и составляет сводки на ограниченном железе и привязывает каждого участника к его залогиненному профилю в системе — сводки это честное извлечение по ключевым сигналам, а не магия ИИ.

Читать дальше

Эти проекты близки по техническим или продуктовым решениям и показывают, как тот же принцип работает в другом контексте.

Есть похожая идея?

Обсудить проект