Files
sepot/app
Julius Joska 933a74c900 feat(app): 1:1 voice and video calls
End-to-end encrypted calls between two contacts over WebRTC. Call
signalling (offer, answer, hang-up) travels as ordinary Signal-encrypted
messages through the relay; media is DTLS-SRTP, peer to peer when
possible and through the operator's TURN server otherwise.

- Non-trickle ICE (candidates gathered for up to 3 s), 45 s ring
  timeout, busy handling, and a call log entry in the conversation.
- The system call UI rings even when the app is closed: CallKit from a
  PushKit VoIP push on iOS, a full-screen incoming call from an FCM
  wake-up on Android. The wake-up carries no caller; the app learns who
  is calling from the queued offer once it is unlocked.
- New permissions: camera for video, audio routing and Bluetooth
  headsets, network state; iOS background modes audio and voip.

Push on Android: a fresh install now picks UnifiedPush when a
distributor is installed and FCM otherwise, instead of leaving wake-ups
off. Without a wake-up Android puts the app to sleep and messages wait
until it is opened. Users can switch at any time in Settings.
2026-10-03 22:44:39 +02:00
..
2026-10-03 22:44:39 +02:00
2026-10-03 22:44:39 +02:00

Šepot — Flutter client

The Šepot mobile client. See the repository README for the project overview, threat model, and license.

Quick start

flutter pub get
flutter run                       # against the default relay
flutter build apk --release       # signed release APK (see key.properties)

Layout

Path Contents
lib/core/ Crypto facade, storage (SQLCipher), relay client + transport, push, services
lib/features/ Screens (onboarding, chat, contacts, groups, settings, safety…)
lib/models/ lib/providers/ Data models and Riverpod providers
lib/l10n/ Localization (app_*.arb, generated AppLocalizations)
test/ integration_test/ Unit, storage, crypto, and on-device integration tests

Localization

Strings are defined in lib/l10n/app_cs.arb (template) and translated into app_en/de/ru/it.arb. After editing, run flutter gen-l10n. See the root README for how to contribute a new language.