🌍 Read this in other languages: Русский
A modern, lightning-fast, and elegant unofficial Telegram client for Android.
Note: Monogram is in active development. Expect frequent updates, codebase changes, and bugs.
Monogram is built to deliver a native and seamless Telegram experience. Powered by the official TDLib, it features a fluid Material Design 3 interface and follows strict Clean Architecture and MVI principles.
- Architecture & State: MVI, Decompose (navigation & lifecycle), Koin (DI).
- UI: Jetpack Compose + Material 3 Adaptive (seamless phone-to-tablet scalability).
- Async: Kotlin Coroutines & Flow.
- Media: Media3/ExoPlayer (playback), Coil 3 (GIF/SVG/video frames), Lottie (animations).
- Camera & ML: CameraX + ML Kit Vision (lightning-fast QR/barcode scanning).
- Maps: OSMDroid (open-source native map rendering).
- Security: Biometric Compose (app locking), Security Crypto (safe local data storage).
1. Clone the repository
git clone https://github.com/monogram-android/monogram.git
2. Set up API Keys
Create a local.properties file in the project root and add your Telegram API credentials (you can grab these from my.telegram.org):
API_ID=your_api_id
API_HASH=your_api_hash
3. Build & Run Open the project in Android Studio, let Gradle sync, and fire it up!
- Respect Telegram's Terms of Service: Monogram is an unofficial client. We strictly adhere to the Telegram API Terms of Service. Contributions that facilitate spam, unauthorized data scraping, or any other violations of Telegram's terms will be rejected.
- Architecture & Patterns: Maintain the project's Clean Architecture and MVI flow. Ensure that business logic resides in the
domainmodule, data handling indata, and UI logic inpresentation. - Modern Android Development: Use Jetpack Compose and Material 3 components. Ensure UI changes are responsive and leverage Material 3 Adaptive for various form factors (phones, tablets, foldables).
- Code Style: Write clean, idiomatic Kotlin. Follow the existing codebase's formatting and naming conventions.
- Testing: Verify your changes on multiple device configurations. Ensure that new features do not break existing functionality or performance.