Read this in other languages: Русский
Monogram is a modern, lightning-fast, and elegant unofficial Telegram client for Android. Built with Jetpack Compose and Material Design 3, it aims to provide a native and fluid experience while leveraging the power of the official TDLib.
Note: Monogram is currently in active development. Expect frequent updates, architectural changes, and the occasional bug.
- Material Design 3: A beautiful, adaptive UI that looks great on phones, tablets, and foldables.
- Clean Architecture: Separation of concerns with Domain, Data, and Presentation layers.
- MVI Pattern: Predictable state management using MVIKotlin.
- Secure: Built-in biometric locking and encrypted local storage.
- Media Rich: High-performance media playback with ExoPlayer and Coil 3.
- Fast & Efficient: Powered by Kotlin Coroutines and optimized for performance.
Monogram leverages the latest Android development tools and libraries:
| Category | Libraries |
|---|---|
| Language | Kotlin |
| UI Toolkit | Jetpack Compose (Material 3) |
| Architecture | Decompose (Navigation), MVIKotlin |
| Dependency Injection | Koin |
| Async | Coroutines & Flow |
| Telegram Core | TDLib (Telegram Database Library) |
| Image Loading | Coil 3 |
| Media | Media3 (ExoPlayer) |
| Maps | MapLibre |
| Local DB | Room |
The project follows a multi-module structure to ensure separation of concerns and scalability:
- :app - The main Android application module.
- :domain - Pure Kotlin module containing business logic, use cases, and repository interfaces.
- :data - Implementation of repositories, data sources, and TDLib integration.
- :presentation - UI components, screens, and view models (MVI Stores).
- :core - Common utility classes and extensions used across modules.
- :baselineprofile - Baseline Profiles for optimizing app startup and performance.
Follow these steps to set up the project locally.
- Android Studio: Ladybug or newer (recommended).
- JDK: Java 17 or newer.
git clone https://github.com/monogram-android/monogram.git
cd monogramTo connect to Telegram servers, you need your own API credentials.
- Log in to my.telegram.org.
- Go to API development tools.
- Create a new application to get your
App api_idandApp api_hash. - Create a file named
local.propertiesin the root directory of the project (if it doesn't exist). - Add the following lines:
API_ID=12345678
API_HASH=your_api_hash_here- Open the project in Android Studio.
- Sync Gradle.
- Select the
apprun configuration. - Connect a device or start an emulator.
- Click Run.
We welcome contributions! Whether it's fixing bugs, improving documentation, or suggesting new features.
- Check the Issues: Look for open issues or create a new one to discuss your ideas.
- Fork & Branch: Fork the repo and create a feature branch.
- Code Style: Please follow the existing Kotlin coding style and Clean Architecture guidelines.
- Submit a PR: Open a Pull Request with a clear description of your changes.
Important:
- Respect the Telegram API Terms of Service.
- Ensure your code passes all checks and tests.