О проекте

Голосовые комнаты, которые можно поднять у себя

Chatovo — открытый проект: код, сервер медиа и база данных живут на своих машинах, а не в чужом облаке.

Зачем это всё

Проект начинался как попытка убрать лишнее из голосового общения.

Разговор не должен требовать подготовки

Чтобы позвать друзей поговорить, обычно нужно завести сервер, разложить каналы и раздать роли. Здесь достаточно создать комнату и отправить ссылку.

Данные остаются у владельца

Медиасервер, база и файлы разворачиваются самостоятельно. Никакой аналитики на стороне, никаких сторонних хранилищ для вложений.

Всё открыто

Исходники, история релизов и обсуждения лежат на GitHub. Можно прочитать, как устроена любая часть, и собрать свою сборку.

Как это собрано

Монорепозиторий на Bun workspaces: клиент, сервер, десктоп и общие схемы в одном месте.

Клиент

Next.js 16 и React 19, статический экспорт. Архитектура — Feature-Sliced Design, стили на SCSS-модулях.

Десктоп и мобильный

Tauri 2: та же веб-часть в нативной оболочке на Rust для Windows, macOS, Linux и Android.

Сервер

NestJS 11 на Bun, Prisma поверх собственного Postgres. Авторизация — better-auth.

Медиа

Собственный LiveKit SFU для WebRTC. Доступ в комнату выдаётся токеном, который подписывает сервер.

Общие схемы

Zod-схемы в пакете @chatovo/schemas — один источник правды для типов клиента и сервера.

Инструменты

TypeScript везде, Vitest и Playwright для тестов, сборка и релизы через GitHub Actions.

Кто участвовал

Спасибо всем, чей код попал в проект.

Как принять участие

Проект открыт для правок — от опечатки в тексте до нового раздела настроек.

Прислать изменения

Форкните репозиторий, соберите ветку от master и откройте пул-реквест. Кодстайл и структура описаны в документации репозитория.

Сообщить о проблеме

Нашли баг или у вас есть идея — заведите issue. Шаги воспроизведения и версия приложения сильно ускоряют разбор.

Поднять у себя

В репозитории есть конфигурация Caddy и LiveKit, чтобы развернуть свой экземпляр целиком.