Читать на других языках: English
Monogram — это современный, молниеносный и элегантный неофициальный клиент Telegram для Android. Созданный с использованием Jetpack Compose и Material Design 3, он стремится обеспечить нативный и плавный опыт использования, используя мощь официальной библиотеки TDLib.
Примечание: Monogram находится в стадии активной разработки. Ожидайте частых обновлений, архитектурных изменений и возможных ошибок.
Поддержать проект на Boosty.
- Material Design 3: Красивый, адаптивный интерфейс, который отлично смотрится на телефонах, планшетах и складных устройствах.
- Clean Architecture: Разделение ответственности с помощью слоев Domain, Data и Presentation.
- Паттерн MVI: Предсказуемое управление состоянием с использованием MVIKotlin.
- Безопасность: Встроенная биометрическая блокировка и зашифрованное локальное хранилище.
- Мультимедиа: Высокопроизводительное воспроизведение медиа с ExoPlayer и Coil 3.
- Быстродействие: Работает на Kotlin Coroutines и оптимизирован для производительности.
Monogram использует новейшие инструменты и библиотеки для разработки под Android:
| Категория | Библиотеки |
|---|---|
| Язык | Kotlin |
| UI Toolkit | Jetpack Compose (Material 3) |
| Архитектура | Decompose (Навигация), MVIKotlin |
| Внедрение зависимостей | Koin |
| Асинхронность | Coroutines & Flow |
| Ядро Telegram | TDLib (Telegram Database Library) |
| Загрузка изображений | Coil 3 |
| Медиа | Media3 (ExoPlayer) |
| Карты | MapLibre |
| Локальная БД | Room |
Проект следует многомодульной структуре для обеспечения разделения ответственности и масштабируемости:
- :app - Основной модуль приложения Android.
- :domain - Чистый Kotlin модуль, содержащий бизнес-логику, use cases и интерфейсы репозиториев.
- :data - Реализация репозиториев, источников данных и интеграция с TDLib.
- :presentation - UI компоненты, экраны и view models (MVI Stores).
- :core - Общие служебные классы и расширения, используемые во всех модулях.
- :baselineprofile - Baseline Profiles для оптимизации запуска и производительности приложения.
Следуйте этим шагам, чтобы настроить проект локально.
- Android Studio: Ladybug или новее (рекомендуется).
- JDK: Java 17 или новее.
git clone https://github.com/monogram-android/monogram.git
cd monogramДля подключения к серверам Telegram вам понадобятся собственные учетные данные API.
- Войдите на my.telegram.org.
- Перейдите в API development tools.
- Создайте новое приложение, чтобы получить
App api_idиApp api_hash. - Создайте файл с именем
local.propertiesв корневой директории проекта (если он не существует). - Добавьте следующие строки:
API_ID=12345678
API_HASH=your_api_hash_here- Войдите в консоль Firebase
- Создайте новый проект.
- Добавьте туда новое приложение с нужным вам applicationId (если в проекте есть несколько варинатов с разными ID, то нужно будет создать несколько приложений). По умолчанию applicationId для debug и release сборок отличаются!
- Консоль создаст файл
google-services.json, скопируйте его в корень модуля app (monogram/app/google-services.json). Если вы создали несколько приложений, то скопируйте только самый последний конфиг. - Перейдите в раздел "Cloud Messaging".
- Нажмите на ссылку Manage service accounts.
- В открывшемся окне выберите верхний раздел Keys.
- Нажмите на кнопку Add key, и в диалоге выберите вариант JSON, дождитесь скачивания файла на компьютер.
- Вернитесь на страницу, на которой вы получали App ID от Telegram.
- Нажмите на кнопку Update рядом с разделом FCM credentials.
- Загрузите JSON сервисного аккаунта в открывшейся странице.
- Откройте проект в Android Studio.
- Увеличьте лимиты индексации IDE, чтобы
TdApi.java(обертка над TDLib) корректно индексировался:
# custom IntelliJ IDEA properties (expand/override 'bin\idea.properties')
# size in Kb
idea.max.intellisense.filesize=20480
# size in Kb
idea.max.content.load.filesize=20480- В Android Studio или IntelliJ IDEA откройте Help -> Edit Custom Properties..., вставьте строки выше и при необходимости перезапустите IDE.
- Синхронизируйте Gradle.
- Выберите конфигурацию запуска
app. - Подключите устройство или запустите эмулятор.
- Нажмите Run.
Если вам необходимо собрать TDLib из исходного кода, сначала нужно установить необходимые зависимости в вашей системе. Для дистрибутивов на основе Debian/Ubuntu это можно сделать, выполнив команду:
sudo apt-get update
sudo apt-get install build-essential git curl wget php perl gperf unzip zip default-jdk cmakeПосле установки зависимостей вы можете запустить процесс сборки, выполнив скрипт сборки из корневой директории вашего проекта:
./build-tdlib.shМы приветствуем вклад в развитие проекта! Будь то исправление ошибок, улучшение документации или предложение новых функций.
- Проверьте Issues: Посмотрите открытые задачи или создайте новую для обсуждения ваших идей.
- Работайте от
develop: Создавайте свои ветки отdevelopи держите все изменения на базе этой ветки. - Fork & Branch: Сделайте форк репозитория и создайте ветку для вашей функции.
- Стиль кода: Пожалуйста, следуйте существующему стилю кода Kotlin и принципам Clean Architecture.
- Отправьте PR: Откройте Pull Request в
developс четким описанием ваших изменений.
Важно:
- Соблюдайте Условия использования Telegram API.
- Убедитесь, что ваш код проходит все проверки и тесты.
Этот проект распространяется под лицензией GNU General Public License v3.0. Полный текст см. в LICENSE.