Urgent.News

What's breaking now, across thousands of outlets.

Tech

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.

Read the original at dev.to →

More in Tech

London’s Foundational exits stealth with €9.6 million to track satellites and debris with “millimetre-level” precision

Foundational, a London-based SpaceTech startup developing infrastructure for a more precise understanding of Earth and orbit, has emerged from stealth with €9.6 million (£8.2 million) in pre-Seed…

  • Foundational startup exits stealth with €9.6 million funding
  • Investors include Inflection, BACKED, Final Frontier, Adjacent, and Type One Ventures
  • Company automates Satellite Laser Ranging for millimetre-level precision

Entry Animations with CSS @starting-style

Entry animations can be tricky—between handling DOM load times and animating from display: none , it's easy to get stuck.

  • @starting-style simplifies entry animations by defining initial CSS values for hidden elements.
  • It cannot be nested within pseudo-elements like ::before or ::after.
  • @starting-style works with transition property for smooth element visibility changes.

More from Thursday 1 October →