explaingit

coderguy787/freetime

Analysis updated 2026-05-18

0KotlinAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

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.

Mindmap

mindmap
  root((FreeTime))
    Features
      Real-time Chat
      Voice And Video Calls
      Group Chat
      Encrypted Media
    Architecture
      MVVM
      Repository Pattern
      Jetpack Compose
    Backend
      Node.js
      Socket.IO
      Master And Peer Servers
    Security
      AES-256-GCM
      TOTP 2FA
      JWT Auth
      TLS 1.3
    Caveats
      Key Exchange Omitted
      Educational Use Only

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build and self-host a private encrypted chat app for a small group instead of relying on a big platform.

USE CASE 2

Learn how to structure an Android app with MVVM, Jetpack Compose, and a Repository pattern.

USE CASE 3

Study how a chat app can combine real-time messaging over Socket.IO with WebRTC voice and video calls.

USE CASE 4

See a reference example of adding TOTP two-factor authentication to a mobile app.

What is it built with?

KotlinJetpack ComposeNode.jsSocket.IOWebRTC

How does it compare?

coderguy787/freetimeandroosio/thortuneazcomp2000/battery-sentinel
Stars000
LanguageKotlinKotlinKotlin
Setup difficultyhardeasymoderate
Complexity4/52/52/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

Requires setting up your own master and peer servers plus filling in the intentionally omitted security-critical key exchange and auth logic yourself.

Described as a permissive open-source license for educational, research, and personal use, no specific license name is given.

In plain English

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.

Copy-paste prompts

Prompt 1
I'm building an Android chat app with Jetpack Compose using MVVM and a Repository pattern. Show me how to structure the ViewModels and Repositories layer.
Prompt 2
How do I implement real-time messaging in an Android app using Socket.IO with a Node.js backend?
Prompt 3
Show me how to add TOTP two-factor authentication to a mobile app using a time based one-time password library.
Prompt 4
I want to encrypt media files with AES-256-GCM using Google's Tink library in Kotlin. Show me an example.
Prompt 5
How do I set up peer-to-peer voice and video calls in Android using WebRTC?

Frequently asked questions

What is freetime?

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.

What language is freetime written in?

Mainly Kotlin. The stack also includes Kotlin, Jetpack Compose, Node.js.

What license does freetime use?

Described as a permissive open-source license for educational, research, and personal use, no specific license name is given.

How hard is freetime to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is freetime for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.