Analysis updated 2026-05-18
Build and self-host a private encrypted chat app for a small group instead of relying on a big platform.
Learn how to structure an Android app with MVVM, Jetpack Compose, and a Repository pattern.
Study how a chat app can combine real-time messaging over Socket.IO with WebRTC voice and video calls.
See a reference example of adding TOTP two-factor authentication to a mobile app.
| coderguy787/freetime | androosio/thortune | azcomp2000/battery-sentinel | |
|---|---|---|---|
| Stars | 0 | 0 | 0 |
| Language | Kotlin | Kotlin | Kotlin |
| Setup difficulty | hard | easy | moderate |
| Complexity | 4/5 | 2/5 | 2/5 |
| Audience | developer | general | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires setting up your own master and peer servers plus filling in the intentionally omitted security-critical key exchange and auth logic yourself.
FreeTime is an open-source Android chat app that offers real-time messaging, voice and video calls, group chats, and end-to-end encrypted media sharing. This repository includes both the Android client app and a sanitized version of the server-side backend it talks to, with placeholder values standing in for production secrets that you would need to fill in yourself. The app covers a fairly full set of chat features: typing indicators, read receipts, message status, peer-to-peer voice and video calls over WebRTC, group chats with channels, role based permissions and voting, a friend request system, encrypted sharing of images, video, and files, push notifications, and two-factor authentication using time based one-time codes. Behind the scenes, the Android app talks to a Node.js backend using Socket.IO over HTTPS and secure WebSockets, with a separate database layer for storage. To self-host the whole thing, you would set up a master server and a peer server on a Debian or Linux machine, fill in the required environment variable placeholders with your own secure values, point the Android app's build configuration at your server's address, and then build the app yourself. On the Android side, the app follows an MVVM plus Repository architecture built with Jetpack Compose, using Dagger Hilt for dependency injection, Retrofit and OkHttp plus Socket.IO for networking, Room for local storage, Firebase Cloud Messaging for push notifications, and Kotlin Coroutines and Flow for asynchronous code. Media is encrypted using AES-256-GCM through Google's Tink library, with per-chat unique keys and hardware-backed key storage on the device, JWT based authentication with automatic token refresh, and TLS 1.3 for all network traffic. Importantly, the README is upfront that the real encryption key exchange protocol and the server-side authentication details are intentionally left out of this public repository to prevent misuse, so what is shown here is a conceptual security model rather than a production-ready implementation. The project describes itself as for educational, research, and personal use, and says a real deployment would still need proper infrastructure, certificate management, and security review.
An open-source Android chat app with encrypted messaging, voice and video calls, and a self-hostable Node.js backend, with key security internals intentionally omitted.
Mainly Kotlin. The stack also includes Kotlin, Jetpack Compose, Node.js.
Described as a permissive open-source license for educational, research, and personal use, no specific license name is given.
Setup difficulty is rated hard, with roughly 1day+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.