Chat and calls platform
Vokri
Personal projectIn production
A private platform for chat, calls and screen sharing for small groups, in the browser and on Windows, with voice and video on its own server.
Context
Vokri is a private platform for chat, calls and screen sharing, for small groups of friends who talk, play and share their screens. It runs in the browser, with permanent accounts, custom profiles, invite-only servers and quick password-protected rooms, and it has a Windows app. It runs on its own VPS.
Challenge
Bring voice, text and screen sharing together in a private space that is easy to find your way around, with the media on its own server. A call’s quality depends on the browser, the device, the network and the server, so the product could not promise more than it delivers, and it had to show the state of the connection clearly. And the desktop app had to capture the computer’s audio without Electron’s freezes.
Solution
- Media on its own server. In voice channels, a self-hosted LiveKit distributes voice and screens and adapts the quality for each viewer. In quick rooms, direct WebRTC, with its own TURN server when a direct connection is not possible.
- Up to two screens per channel, enforced by Vokri’s signaling and by LiveKit’s publishing permissions, even after the app restarts. An integration test covers two screens, refusing a third, audio, revocation and reconnection.
- Careful audio. Opus voice at 48 kHz with echo cancellation, and noise reduction with RNNoise running on the device itself, never sending the microphone to another service. Screen audio travels apart from the microphone, in sync with the video.
- A Windows app in Electron, with the same accounts as the web version, and a Rust (WASAPI) component that captures the computer’s audio without freezing.
- Security. Passwords with Argon2id, opaque sessions in Redis, HttpOnly cookies, rate limiting, WebSocket tickets valid for 60 seconds, and unprivileged containers with a read-only file system.
- Honest diagnostics. A panel shows the call’s latency, jitter, packet loss and FPS, measured in the browser and never sent to the server.
- Safe releases. Before every update, a backup of the database and the uploads; if any copy fails, the update is cancelled.
Result
The web version is in production, with accounts, servers, messages, calls and screen sharing; the Windows app is in private beta. The project has 81 automated tests, and its documentation is clear about what they do not prove: audio quality and working between two computers are checked on a real call.
Numbers
- Automated tests
- 81
- Source: it() and test() blocks in the 27 test files under src/, server/ and desktop/, counted in the project's code · measured on Sep 27, 2026
Technologies
- TypeScript
- React
- Vite
- Fastify
- PostgreSQL 18
- Redis 7
- LiveKit
- WebRTC and TURN (Coturn)
- Electron 44
- Rust (WASAPI)
- Docker Compose and Caddy
Gallery
