π§ Active Development: iOS to Android Port in Progress
Convos is an everyday private chat app for the surveillance age. Built on the open-source, censorship-resistant, post-quantum secure XMTP protocol, Convos provides instant, impermanent, and self-evidently private conversations.
This repository contains the native Android version of Convos, ported from the original iOS Swift/SwiftUI application to Kotlin and Jetpack Compose.
- Original iOS: ~150 Swift files, ~30,000 lines of code
- Target Platform: Android 8.0+ (API 26+)
- Current Status: ~25-30% complete - Foundation established
- Architecture: Clean Architecture with Room, Kotlin Coroutines, Flow, and Jetpack Compose
Convos is a privacy-first messenger that offers:
- No signup β Simply scan, tap or share into a conversation
- No numbers β New identity in every conversation
- No history β Time bomb your groupchats with irreversible countdowns
- No spam β Every conversation is invitation-only
- No tracking β Zero data collection, not even contact info
- No server β Messages stored on your device, secured by XMTP
Learn more at convos.org.
The Android app currently has a solid foundation in place:
- β Multi-module Gradle project setup (app + core)
- β Product flavors for 3 environments (local, dev, prod)
- β Build system with version catalog
- β ProGuard/R8 configuration for release builds
- β Room database with SQLite and WAL mode
- β All entity classes (Conversation, Message, Inbox, ConversationMember)
- β Complete DAO interfaces with CRUD operations
- β Type converters for custom types
- β Reactive queries with Flow
- β All domain models ported from iOS
- β Message types (Message, Reply, Reaction)
- β Conversation and member models
- β Profile and inbox models
- β Secure storage using EncryptedSharedPreferences
- β Identity store for managing cryptographic keys
- β Session manager for inbox lifecycle
- β Jetpack Compose setup with Material 3
- β Theme system with iOS color palette
- β Typography system
- β Basic app structure
- β Build successfully for all flavors
- β Install and launch on Android devices
- β Initialize database and secure storage
- β Load environment configuration
- β Repository layer (data mappers)
- β XMTP Android SDK integration
- β Message sending and receiving
- β Conversations list UI
- β Conversation detail (chat) UI
- β Message bubbles and input
- β ViewModels and state management
- β Navigation between screens
- β Conversation creation flow
- β Contact/member management
- β Profile and settings screens
- β Firebase setup and configuration
- β Push notifications (FCM)
- β Deep linking
- β Image handling and caching
- β QR code generation
- β Explode (self-destruct) feature
- β Animations and transitions
Tracking parity with the iOS version:
| Feature | iOS | Android | Notes |
|---|---|---|---|
| Database | β GRDB | β Room | Complete |
| Conversations List | β | β | UI needed |
| Chat View | β | β | UI needed |
| Message Sending | β | β | XMTP needed |
| Message Receiving | β | β | XMTP needed |
| Push Notifications | β | Stub in place | |
| Conversation Creation | β | β | Not started |
| Profile Management | β | β | Not started |
| Settings | β | β | Not started |
| Deep Linking | β | Manifest configured | |
| Message Reactions | β | β | Not started |
| Message Replies | β | β | Not started |
| Explode Feature | β | β | Not started |
| QR Code Sharing | β | β | Not started |
| Debug Menu | β | β | Not started |
Legend: β
Complete |
- Android Studio Ladybug | 2024.2.1 or newer
- JDK 17+
- Android SDK with:
- Minimum SDK: 26 (Android 8.0)
- Target SDK: 35 (Android 15)
- Compile SDK: 35
- Clone the repository
git clone https://github.com/pierce403/convos-android.git
cd convos-android- Open in Android Studio
# Open the project directory in Android Studio
# Or use the command line:
open -a "Android Studio" .- Sync Gradle Android Studio will prompt you to sync. Click "Sync Now" or:
./gradlew build- Select Build Variant
- View β Tool Windows β Build Variants
- Select
localDebugfor local development
- Run the App
./gradlew installLocalDebugFor detailed build instructions, see README_ANDROID.md.
convos-android/
βββ app/ # Android app module (UI layer)
β βββ src/
β β βββ main/kotlin/ # App code (ViewModels, Compose UI)
β β βββ main/res/ # Android resources
β β βββ main/assets/ # Config files
β βββ build.gradle.kts
βββ core/ # Core business logic module
β βββ src/main/kotlin/ # Database, domain, XMTP
β βββ build.gradle.kts
βββ gradle/
β βββ libs.versions.toml # Dependency versions
βββ Convos/ # Original iOS Swift code (reference)
βββ ConvosCore/ # Original iOS core logic (reference)
βββ docs/
βββ TODO.md # Prioritized next steps
βββ STATUS.md # Current progress
βββ AGENTS.md # AI agent guidance
βββ SUMMARY.md # Architecture decisions
| Layer | iOS (Original) | Android (Port) |
|---|---|---|
| UI | SwiftUI | Jetpack Compose + Material 3 |
| Database | GRDB | Room (SQLite) |
| State | @Observable/@State | StateFlow + ViewModel |
| Async | async/await + Combine | Coroutines + Flow |
| Security | Keychain | EncryptedSharedPreferences |
| Networking | URLSession | Retrofit + OkHttp |
| Images | SDWebImage | Coil 3 |
| Messaging | XMTP iOS SDK | XMTP Android SDK |
- Clean Architecture: Separation of UI, domain, and data layers
- Repository Pattern: Abstract data sources
- MVVM: ViewModels manage UI state
- Reactive Streams: Flow for reactive data updates
- Dependency Injection: Manual (may add Hilt later)
Comprehensive documentation for this project:
- README_ANDROID.md - Detailed Android build and development guide
- TODO.md - Prioritized task list with time estimates
- STATUS.md - Current completion status and statistics
- AGENTS.md - Guide for AI agents continuing the work
- SUMMARY.md - Architecture decisions and patterns
- ANDROID_CONVERSION_TODO.md - Complete phase breakdown
- CONVERSION_PROGRESS.md - Phase-by-phase progress tracking
# Run unit tests
./gradlew test
# Run instrumented tests (requires device/emulator)
./gradlew connectedAndroidTest
# Run specific module tests
./gradlew :core:testThis project is in active development. Key areas needing work:
- Repository Layer - Data mapping between database and domain
- XMTP Integration - Android SDK implementation
- UI Screens - Compose implementations of iOS screens
- ViewModels - State management for screens
See TODO.md for detailed task breakdown.
If you're an AI agent continuing this work:
- Start with AGENTS.md - Contains critical guidance
- Check STATUS.md - See what's complete
- Review TODO.md - Pick next task
- Reference iOS code - In
Convos/andConvosCore/directories - Update documentation - Keep README.md and feature parity table current
- Reference iOS implementation for behavior
- Follow Kotlin/Android conventions
- Use existing patterns established in core module
- Update documentation as you work
- Commit frequently with clear messages
- Phase 1: Project setup and infrastructure (100%)
- Phase 2: Database layer with Room (100%)
- Phase 3: Domain models (100%)
- Phase 4: Session and auth management (100%)
- Phase 5: Repository layer and XMTP integration (0%)
- Phase 6: Basic UI implementation (0%)
- Phase 7: Navigation and ViewModels (0%)
- Phase 8: Core features (0%)
- Phase 9: Polish and optimization (0%)
- Phase 10: Release preparation (0%)
Current Progress: 25-30% Complete
See LICENSE file for details.
- Website: convos.org
- XMTP Protocol: xmtp.org
- Original iOS Repo: [Link if public]
For questions about the Android port:
- Check documentation in
/docs - Review iOS implementation for reference
- See AGENTS.md for common patterns and solutions
Status: Foundation Complete - Ready for Feature Implementation
Last Updated: October 26, 2025
Current Commit: 1c0f61f