Про проєкт

Голосові кімнати, які можна запустити в себе

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 і відкрий pull request. Стиль коду й структуру описано в репозиторії.

Повідомити про проблему

Є баг чи ідея? Відкрий issue. Кроки для відтворення та версія застосунку суттєво пришвидшують розбір.

Запустити в себе

У репозиторії є конфігурація Caddy та LiveKit, щоб підняти власний повноцінний екземпляр.