| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Read this in other languages: Русский, Türkçe, 한국어, اُردو, Español
MonoGram is a modern, lightning-fast, and elegant unofficial Telegram client for Android. Built with Jetpack Compose and Material Design 3, it delivers a native and fluid experience powered by the official TDLib.
Important
MonoGram is currently in active development. Expect frequent updates, architectural changes, and the occasional bug.
Support the project on Boosty.
Follow these steps to set up the project locally.
git clone --recurse-submodules https://github.com/monogram-android/monogram.git
cd monogramTo connect to Telegram servers, you need your own API credentials.
API_ID=12345678
API_HASH=your_api_hash_hereFor signed release builds from Gradle, add these properties too:
RELEASE_STORE_FILE=keystore/release.jks
RELEASE_STORE_PASSWORD=your_store_password
RELEASE_KEY_ALIAS=your_key_alias
RELEASE_KEY_PASSWORD=your_key_passwordThis step is required for firebase build variants. You can skip it if you only plan to build libre variants.
Log in to the Firebase console.
Create a new project.
Add two Firebase Android apps:
Download the google-services.json file and copy it to the root of the app module ( monogram/app/google-services.json). Make sure it contains clients for both package names above.
Go to the Cloud Messaging section.
Click Manage service accounts.
Select the Keys section at the top of the window that opens.
Click Add key and select the JSON option. Wait for the file to download.
Return to the Telegram API page where you received your App ID.
Click Update next to the FCM credentials section.
Upload the service account JSON on the page that opens.
The animations require libvpx to be compiled. This has to be done before starting a Gradle build or it will cause build failures.
# size in Kb
idea.max.intellisense.filesize=20480
# size in Kb
idea.max.content.load.filesize=20480If you need to build TDLib from source, first install the required dependencies. For Debian/Ubuntu-based distributions:
sudo apt-get update
sudo apt-get install build-essential git curl wget php perl gperf unzip zip default-jdk cmakeThen run the build script from the root of your project:
./build-tdlib.shThe script supports:
Upstream repositories used by the script:
If you run ./build-tdlib.sh without arguments, it will prompt you to choose one of these modes interactively.
Use these variants in Android Studio:
Variant naming:
Useful Gradle tasks:
./gradlew :app:assembleOfficialFirebaseRelease
./gradlew :app:assembleTelemtFirebaseRelease
./gradlew :app:assembleOfficialFirebaseDebug
./gradlew :app:assembleTelemtFirebaseDebug
./gradlew :app:assembleOfficialLibreRelease
./gradlew :app:assembleTelemtLibreRelease
./gradlew :app:assembleOfficialLibreDebug
./gradlew :app:assembleTelemtLibreDebugAPK names:
We welcome contributions! Whether it's fixing bugs, improving documentation, or suggesting new features.
Important
MonoGram welcomes community translations! You can contribute your own language by editing the strings resource file.
The source strings are located at presentation/src/main/res/values/string.xml. To add a new language, create a corresponding values-<locale>/string.xml file (e.g. values-de/string.xml for German) and translate the strings there. Open a PR with your translation and we'll get it merged.
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:
| Module | Description |
|---|---|
| :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. |
This project is licensed under the GNU General Public License v3.0.
| Back | FazBrowse Home | New Git URL |