Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

180 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Convos Android

🚧 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.

πŸ”„ About This Port

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

What is Convos?

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.

βœ… What Works Now

The Android app currently has a solid foundation in place:

Infrastructure (100% Complete)

  • βœ… 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

Database Layer (100% Complete)

  • βœ… 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

Domain Layer (100% Complete)

  • βœ… All domain models ported from iOS
  • βœ… Message types (Message, Reply, Reaction)
  • βœ… Conversation and member models
  • βœ… Profile and inbox models

Security & Auth (100% Complete)

  • βœ… Secure storage using EncryptedSharedPreferences
  • βœ… Identity store for managing cryptographic keys
  • βœ… Session manager for inbox lifecycle

UI Foundation (100% Complete)

  • βœ… Jetpack Compose setup with Material 3
  • βœ… Theme system with iOS color palette
  • βœ… Typography system
  • βœ… Basic app structure

The App Can Currently:

  • βœ… Build successfully for all flavors
  • βœ… Install and launch on Android devices
  • βœ… Initialize database and secure storage
  • βœ… Load environment configuration

🚧 What Still Needs Work

Critical Features (Next Priority)

  • ❌ Repository layer (data mappers)
  • ❌ XMTP Android SDK integration
  • ❌ Message sending and receiving
  • ❌ Conversations list UI
  • ❌ Conversation detail (chat) UI
  • ❌ Message bubbles and input

Core Features (Following Priority)

  • ❌ ViewModels and state management
  • ❌ Navigation between screens
  • ❌ Conversation creation flow
  • ❌ Contact/member management
  • ❌ Profile and settings screens

Integration & Polish

  • ❌ Firebase setup and configuration
  • ❌ Push notifications (FCM)
  • ❌ Deep linking
  • ❌ Image handling and caching
  • ❌ QR code generation
  • ❌ Explode (self-destruct) feature
  • ❌ Animations and transitions

🎯 Feature Parity Status

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 | ⚠️ Partial | ❌ Not Started

πŸš€ Getting Started (Android Development)

Prerequisites

  • 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

Quick Start

  1. Clone the repository
git clone https://github.com/pierce403/convos-android.git
cd convos-android
  1. Open in Android Studio
# Open the project directory in Android Studio
# Or use the command line:
open -a "Android Studio" .
  1. Sync Gradle Android Studio will prompt you to sync. Click "Sync Now" or:
./gradlew build
  1. Select Build Variant
  • View β†’ Tool Windows β†’ Build Variants
  • Select localDebug for local development
  1. Run the App
./gradlew installLocalDebug

For detailed build instructions, see README_ANDROID.md.

πŸ“ Project Structure

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

πŸ—οΈ Architecture

Technology Stack

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

Design Patterns

  • 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)

πŸ“š Documentation

Comprehensive documentation for this project:

πŸ§ͺ Testing

# Run unit tests
./gradlew test

# Run instrumented tests (requires device/emulator)
./gradlew connectedAndroidTest

# Run specific module tests
./gradlew :core:test

🀝 Contributing

This project is in active development. Key areas needing work:

  1. Repository Layer - Data mapping between database and domain
  2. XMTP Integration - Android SDK implementation
  3. UI Screens - Compose implementations of iOS screens
  4. ViewModels - State management for screens

See TODO.md for detailed task breakdown.

πŸ“ Development Workflow

For AI Agents

If you're an AI agent continuing this work:

  1. Start with AGENTS.md - Contains critical guidance
  2. Check STATUS.md - See what's complete
  3. Review TODO.md - Pick next task
  4. Reference iOS code - In Convos/ and ConvosCore/ directories
  5. Update documentation - Keep README.md and feature parity table current

For Human Developers

  1. Reference iOS implementation for behavior
  2. Follow Kotlin/Android conventions
  3. Use existing patterns established in core module
  4. Update documentation as you work
  5. Commit frequently with clear messages

🎯 Milestones

  • 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

πŸ“„ License

See LICENSE file for details.

πŸ”— Links

πŸ“ž Support

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

About

The native convos Android Application (derp)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages