Real-time voice and video rooms for web, desktop and Android: Next.js, Tauri, LiveKit, NestJS
翻译准备中
正在加载完整 README。
查看完整 README ↗Chatovo is a Discord-inspired voice messenger built around rooms — not endless channel lists. Spin up a room, share the link, start talking. Public, private, or password-protected.
Rooms first
Each room is its own space. No noisy server hierarchies — just the people you invited.
One UI everywhere
The same experience in the browser, on Windows/macOS/Linux, and on Android.
Yours to host
Docker Compose, Caddy, LiveKit SFU, PostgreSQL — run it on your own VPS.
Voice & video — low-latency WebRTC via LiveKit SFU
Room chat — messages, markdown, file attachments
Private rooms — optional password on join
Auth — email + password (better-auth)
Desktop app — tray, global shortcuts, PTT, screen share, auto-update
Android — Tauri 2 APK (manual install)
i18n — English & Russian (use-intl / next-intl)
Open API — NestJS + OpenAPI / Swagger UI
flowchart LR
subgraph clients["Clients"]
WEB["Web · Vite + React"]
DESK["Desktop · Tauri"]
AND["Android · Tauri"]
end
subgraph backend["Backend"]
API["NestJS API · Bun"]
DB[("PostgreSQL")]
LK["LiveKit SFU"]
end
WEB --> API
DESK --> API
AND --> API
API --> DB
clients --> LK
API --> LK
The product app (apps/client/web, app.chatovo.ru) and the public website (apps/landing, chatovo.ru) are two React apps — a Vite SPA and a server-rendered Next.js site — sharing one design system, @chatovo/ui-kit. Both follow Feature-Sliced Design — the site names the pages/ layer views/ to avoid clashing with the Next.js Pages Router.
| Layer | Stack |
|---|---|
| Client | React 19 · SCSS modules · Base UI · Motion · TanStack Query · React Hook Form · Zod |
| Native | Tauri 2 · Rust · deep-link · updater · global-shortcut |
| Server | NestJS on Bun · Prisma · better-auth · React Email |
| Shared | @chatovo/schemas (Zod contracts) · @chatovo/ui-kit · @chatovo/config |
| Tooling | ESLint · Prettier · Stylelint · TypeScript · React Compiler · Bun workspaces |
chatovo/
├── apps/
│ ├── web/ The app · Vite SPA + TanStack Router · FSD under src/ (app / pages / widgets / features / entities / shared)
│ ├── site/ The public website · server-rendered Next.js · ru/en
│ ├── server/ NestJS API · Prisma · modules/
│ └── tauri/ Rust shell · desktop + Android
├── packages/
│ ├── ui-kit/ The design system — primitives, components, icons, SCSS tokens
│ ├── config/ Brand and URL constants shared by web and site
│ └── schemas/ Shared Zod schemas
├── infra/ Caddy · LiveKit configs
├── docs/ Architecture, style guides, ops — indexed in docs/README.md
├── docker-compose.yml
└── docker-compose.dev.yml
| Tool | Required for |
|---|---|
| mise | The pinned toolchain — Bun, Node and Rust from mise.toml, the same versions CI uses |
| Docker + Compose | Local LiveKit / Postgres |
| Tauri system deps | Desktop builds only → prerequisites |
| Android Studio (SDK, NDK, JDK) | Android builds only → apps/client/native/.env |
git clone https://github.com/zilero232/chatovo.git
cd chatovo
mise install # the pinned toolchain
bun install
One .env at the repo root serves the web app, the site and the server; the
site loads it in next.config.ts, the web app reads its NEXT_PUBLIC_* keys in
vite.config.ts.
cp .env.example .env
| Variable | Purpose |
|---|---|
BETTER_AUTH_SECRET | Auth signing |
DATABASE_URL / DIRECT_URL | Postgres (DIRECT_URL is required for Prisma) |
LIVEKIT_* | SFU credentials (server) |
NEXT_PUBLIC_API_URL | Web / site → API |
NEXT_PUBLIC_APP_URL | Site → app links |
NEXT_PUBLIC_LIVEKIT_URL | Web → media |
CORS_ORIGINS | Allowed web origins |
bun --filter @chatovo/server db:push
All-in-one (recommended)
bun dev:full
Opens LiveKit + Caddy + Postgres in Docker, then the web app (:3000), the site (:3001) and the server (:4000).
Browse https://app.chatovo.localhost for the app and https://chatovo.localhost for the site — accept the local certificate once.
Split terminals
bun dev:livekit # terminal 1
bun dev # terminal 2
bun tauri:dev # desktop dev
bun tauri:build # desktop release
bun android:init # first-time Android setup
bun android:dev # Android on device / emulator
bun android:build # APK + AAB
bun tauri:icon # icons from apps/client/web/assets/icons/app-icon*.svg
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗