How arthuraurelieus/telex works
TeleX is an Android end-to-end encrypted chat app. Its main user flow runs from sign-in and profile onboarding through user discovery and chat creation to encrypted text and image messaging. MainActivity coordinates screen navigation and initial key synchronization; view models handle account and chat operations, while crypto modules manage identities, Signal sessions, and attachments. The README contains no usable product documentation, so unsampled capabilities and relationships are represented conservatively; the available excerpts do not establish every backend or persistence interaction.
Main entry points: MainActivity.kt Navigation coordinator · ChatViewModel.kt Chat operations · KeyManager.kt Key and bundle manager · AuthViewModel.kt Authentication and profile
Components 21
App navigation
- Navigation coordinator
app/src/main/java/com/e2eechat/app/MainActivity.kt - User preferences
app/src/main/java/com/e2eechat/app/data/UserPreferences.kt
Account and discovery
- Login screen
app/src/main/java/com/e2eechat/app/ui/screens/LoginScreen.kt - Authentication and profile
app/src/main/java/com/e2eechat/app/data/AuthViewModel.kt - Username and DOB
app/src/main/java/com/e2eechat/app/ui/screens/UsernameDobScreen.kt - Profile picture
app/src/main/java/com/e2eechat/app/ui/screens/ProfilePictureScreen.kt - User discovery
app/src/main/java/com/e2eechat/app/ui/screens/UserBrowseScreen.kt - Settings
app/src/main/java/com/e2eechat/app/ui/screens/SettingsScreen.kt
Chat and persistence
- Chat list
app/src/main/java/com/e2eechat/app/ui/screens/ChatListScreen.kt - Chat conversation
app/src/main/java/com/e2eechat/app/ui/screens/ChatScreen.kt - Chat operations
app/src/main/java/com/e2eechat/app/data/ChatViewModel.kt - Chat models
app/src/main/java/com/e2eechat/app/model/ChatModels.kt - Local chat database
app/src/main/java/com/e2eechat/app/data/ChatDatabase.kt
Encryption and identity
- Key and bundle manager
app/src/main/java/com/e2eechat/app/crypto/KeyManager.kt - Signal protocol store
app/src/main/java/com/e2eechat/app/crypto/KeystoreSignalProtocolStore.kt - Attachment encryption
app/src/main/java/com/e2eechat/app/crypto/AttachmentCrypto.kt - Base64 utilities
app/src/main/java/com/e2eechat/app/crypto/Base64Compat.kt - Identity fingerprint
app/src/main/java/com/e2eechat/app/crypto/IdentityFingerprint.kt
Other components
- App user
- Firebase services
- Supabase storage
Connections 28
- App user → Navigation coordinator: uses
- Navigation coordinator → Login screen: shows
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Username and DOB: routes to
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Profile picture: routes to
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → User discovery: routes to
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Settings: routes to
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Chat list: routes to
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Chat conversation: routes to
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Authentication and profile: creates
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Chat operations: creates
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → User preferences: creates
app/src/main/java/com/e2eechat/app/MainActivity.kt - Login screen → Authentication and profile: submits sign-in
app/src/main/java/com/e2eechat/app/ui/screens/LoginScreen.kt - Authentication and profile → Firebase services: authenticates and reads profiles
app/src/main/java/com/e2eechat/app/data/AuthViewModel.kt - Authentication and profile → Supabase storage: configures storage
app/src/main/java/com/e2eechat/app/data/AuthViewModel.kt - Navigation coordinator → Key and bundle manager: syncs keys
app/src/main/java/com/e2eechat/app/MainActivity.kt - Navigation coordinator → Chat operations: creates chats
app/src/main/java/com/e2eechat/app/MainActivity.kt - Chat list → Chat operations: selects chats
- Chat conversation → Chat operations: sends messages
- Chat operations → Key and bundle manager: fetches bundles
app/src/main/java/com/e2eechat/app/data/ChatViewModel.kt - Chat operations → Attachment encryption: encrypts attachments
app/src/main/java/com/e2eechat/app/data/ChatViewModel.kt - Chat operations → Firebase services: reads and writes chats
- Chat operations → Local chat database: persists locally
- Chat operations → Chat models: uses models
- Key and bundle manager → Signal protocol store: uses key store
app/src/main/java/com/e2eechat/app/crypto/KeyManager.kt - Key and bundle manager → Firebase services: publishes bundles
app/src/main/java/com/e2eechat/app/crypto/KeyManager.kt - Key and bundle manager → Base64 utilities: encodes keys
app/src/main/java/com/e2eechat/app/crypto/KeyManager.kt - Signal protocol store → Base64 utilities: encodes records
app/src/main/java/com/e2eechat/app/crypto/KeystoreSignalProtocolStore.kt - Key and bundle manager → Identity fingerprint: fingerprints identities