I built a chat app solo — rooms, voice/video calls, E2EE, and in-room games
I didn't want to build another messenger. There are plenty. What I wanted was a place where you walk into a room built around a shared interest — movies, music, gaming — and people are just... there, and you can start talking. No "add friend" ceremony, no app store install. That became PTT Chat ( pttchat.ru ). I build and maintain it solo. A note up front: the UI is currently Russian-only.…
In 2021, a software developer decided to create a chat application that offers more than just messaging. Instead, they wanted to build a platform where users could gather in rooms themed around shared interests such as movies, music, gaming, and more. This concept evolved into PTT Chat (pttchat.ru). The developer has been building and maintaining the app on their own. Please note that the UI is currently available only in Russian, with English localization planned for the future.
The app supports various features, including topic rooms, geo-channels, 1:1 and group voice/video calls, end-to-end encryption (E2EE), and in-room games. Users can join the app using Telegram, VK, email, or as a guest. The architecture of the app is based on a single Node.js process, utilizing Express for REST, Socket.io for real-time communication, and SQLite (better-sqlite3, WAL mode) for storing data.
For voice/video calls, the app runs in two modes: mesh (WebRTC direct connections) for small groups and centralized signaling server (SFU) using mediasoup, which is more efficient for larger groups. The default mode is set server-side and doesn't change dynamically based on the group size. While calls were initially the most challenging part, implementing a 1:1 call and then converting it to a group call mid-conversation proved to be the most complex task.
The app also includes two in-room games: Mafia, which involves a host-run lobby with private role assignments, and an AI-generated guessing game where a language model creates a character for players to guess. Bugs discovered during development included an issue with the homepage turning into a browser error page due to a fallback path in the service worker returning undefined instead of a Response.
Additionally, a verification function was present but not wired into the crucial route. These bugs highlight the importance of thoroughly testing all possible scenarios, even those not commonly encountered during daily use.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.