Bu dokümanı diğer dillerde okuyun: English, Русский, Türkçe, 한국어, اُردو, Español
MonoGram, Android için modern, yıldırım hızında ve zarif bir resmi olmayan Telegram istemcisidir. Jetpack Compose ve Material Design 3 ile sıfırdan inşa edilen uygulama, resmi TDLib altyapısıyla desteklenen yerleşik (native) ve akıcı bir deneyim sunar.
Important
MonoGram şu an aktif geliştirme aşamasındadır. Sık güncellemeler, mimari değişiklikler ve nadiren de olsa hatalar (bug) bekleyebilirsiniz.
Projeyi Boosty üzerinden destekleyebilirsiniz.
- Bağımsız İstemci — Android için Telegram'ın bir çatalı (fork) değildir. MonoGram, tamamen sıfırdan bağımsız bir proje olarak inşa edilmiştir.
- Material Design 3 — Telefonlar, tabletler ve katlanabilir cihazlarda harika görünen, estetik ve uyarlanabilir kullanıcı arayüzü.
- Güvenli — Yerleşik biyometrik kilitleme ve şifrelenmiş yerel depolama.
- Zengin Medya Deneyimi — ExoPlayer ve Coil 3 ile yüksek performanslı medya oynatma.
- Hızlı ve Verimli — Kotlin Coroutines ile desteklenen, performans için optimize edilmiş yapı.
- Temiz Mimari (Clean Architecture) — Domain, Data ve Presentation katmanları ile sorumlulukların net bir şekilde ayrılması.
- MVI Deseni — MVIKotlin kullanılarak sağlanan öngörülebilir durum yönetimi.
- NFT veya Kripto Yok — MonoGram; Telegram tarafından dayatılan ve bir mesajlaşma uygulamasının kapsamı dışında gördüğümüz NFT tanıtımları, hediyeleri veya benzeri özellikleri asla içermeyecektir.
Projeyi yerel ortamınızda kurmak için bu adımları izleyin.
- Android Studio: Ladybug veya daha yeni bir sürüm (önerilir).
- JDK: Java 17 veya daha yeni bir sürüm.
git clone --recurse-submodules https://github.com/monogram-android/monogram.git
cd monogramTelegram sunucularına bağlanmak için kendi API kimlik bilgilerinize ihtiyacınız vardır.
- my.telegram.org adresinde oturum açın.
- API development tools (API geliştirme araçları) bölümüne gidin.
App api_idveApp api_hashdeğerlerinizi almak için yeni bir uygulama oluşturun.- Projenin kök dizininde (eğer yoksa)
local.propertiesadlı bir dosya oluşturun. - Aşağıdaki satırları dosyaya ekleyin:
API_ID=12345678
API_HASH=your_api_hash_here- Firebase konsolunda oturum açın.
- Yeni bir proje oluşturun.
- İhtiyacınız olan
applicationIddeğerine sahip yeni bir uygulama ekleyin. Farklı ID'lere sahip birden fazla uygulamanız varsa, birden fazla Firebase uygulaması oluşturun. Varsayılan olarak, hata ayıklama (debug) ve yayınlama (release) sürümlerininapplicationIddeğerleri farklıdır. google-services.jsondosyasını indirin ve app modülünün kök dizinine kopyalayın (monogram/app/google-services.json). Birden fazla uygulama oluşturduysanız, yalnızca en güncel yapılandırmayı kopyalayın.- Cloud Messaging bölümüne gidin.
- Manage service accounts (Hizmet hesaplarını yönet) seçeneğine tıklayın.
- Açılan pencerenin üst kısmındaki Keys (Anahtarlar) sekmesini seçin.
- Add key (Anahtar ekle) seçeneğine tıklayın ve JSON opsiyonunu seçin. Dosyanın indirilmesini bekleyin.
- Uygulama ID'nizi aldığınız Telegram API sayfasına geri dönün.
- FCM kimlik bilgileri (FCM credentials) bölümünün yanındaki Update (Güncelle) butonuna tıklayın.
- Açılan sayfada hizmet hesabı (service account) JSON dosyasını yükleyin.
Animasyonların çalışması için libvpx'in derlenmiş olması gerekir. Bu işlem, Gradle derlemesini başlatmadan önce yapılmalıdır; aksi takdirde derleme hatalarıyla karşılaşırsınız.
- Çalışma dizininizi
presentation/src/main/cppolarak değiştirin. build.shdosyası içerisine kendiANDROID_NDK_HOMEyolunuzu ekleyin.build.shdosyasını çalıştırın ve işlemin tamamlanmasını bekleyin.
- Projeyi Android Studio ile açın.
TdApi.java(TDLib sarmalayıcısı) dosyasının doğru şekilde indekslenebilmesi için IDE indeksleme limitlerini artırın. Android Studio veya IntelliJ IDEA içerisinde, Help (Yardım) → Edit Custom Properties... (Özel Özellikleri Düzenle) yolunu izleyin, aşağıdaki satırları yapıştırın ve istenirse IDE'yi yeniden başlatın:
# Kb cinsinden boyut
idea.max.intellisense.filesize=20480
# Kb cinsinden boyut
idea.max.content.load.filesize=20480- Gradle senkronizasyonunu (Sync) yapın.
appçalıştırma yapılandırmasını (run configuration) seçin.- Bir cihaz bağlayın veya bir emülatör başlatın.
- Run (Çalıştır) butonuna tıklayın.
Eğer TDLib'i kaynaktan derlemeniz gerekirse, öncelikle gerekli bağımlılıkları kurun. Debian/Ubuntu tabanlı dağıtımlar için:
sudo apt-get update
sudo apt-get install build-essential git curl wget php perl gperf unzip zip default-jdk cmakeArdından projenin kök dizininden derleme betiğini (script) çalıştırın:
./build-tdlib.shKatkılarınızı memnuniyetle karşılıyoruz! İster hataları gidermek, ister dokümantasyonu iyileştirmek veya yeni özellikler önermek olsun, her türlü katkıya açığız.
- Sorunları (Issues) Kontrol Edin — Açık sorunlara göz atın veya fikirlerinizi tartışmak için yeni bir sorun kaydı oluşturun.
developDalında Çalışın — Kendi dalınızı (branch)developüzerinden oluşturun ve çalışmalarınızı bu dalı temel alarak sürdürün.- Fork & Branch — Depoyu (repo) çatallayın (fork) ve bir özellik dalı (feature branch) oluşturun.
- Kod Stili — Mevcut Kotlin kod yazım stiline ve Temiz Mimari (Clean Architecture) yönergelerine uyun.
- PR Gönderin — Değişikliklerinizin net bir açıklamasını içeren bir Çekme İsteğini (Pull Request)
developdalına açın.
Important
- Telegram API Hizmet Şartlarına uyun.
- Kodunuzun tüm kontrollerden ve testlerden geçtiğinden emin olun.
- Hatalar (Bugs) — Bir sorun kaydı (issue) açın ve başlıkta
[Bug]etiketini kullanın (Örn:[Bug] Uygulama başlangıçta çöküyor). Ayrıca, bilinen tüm hatalara Hata Takipçisi üzerinden göz atabilirsiniz. - Özellik İstekleri —
[Feature]etiketini içeren bir sorun kaydı açın (Örn:[Feature] Planlanmış mesaj desteği). Mevcut özellik isteklerini Özellik Panosu üzerinden inceleyebilirsiniz.
MonoGram topluluk tarafından yapılan çevirileri memnuniyetle karşılar! Kendi dilinizle katkıda bulunmak için metin kaynak (strings resource) dosyasını düzenleyebilirsiniz.
Kaynak metinler presentation/src/main/res/values/string.xml adresinde yer almaktadır. Yeni bir dil eklemek için, ilgili dile ait bir values-<yerel-kod>/string.xml dosyası oluşturun (örneğin Almanca için values-de/string.xml) ve metinleri orada çevirin. Çevirinizi içeren bir Çekme İsteği (PR) açın, biz de onu projeye dahil edelim.
MonoGram, en güncel Android geliştirme araçlarından ve kütüphanelerinden yararlanır:
| Kategori | Kütüphaneler |
|---|---|
| Dil | Kotlin |
| Kullanıcı Arayüzü (UI) | Jetpack Compose (Material 3) |
| Mimari | Decompose (Navigasyon), MVIKotlin |
| Bağımlılık Enjeksiyonu (DI) | Koin |
| Asenkron İşlemler | Coroutines & Flow |
| Telegram Çekirdeği | TDLib (Telegram Database Library) |
| Görsel Yükleme | Coil 3 |
| Medya | Media3 (ExoPlayer) |
| Haritalar | MapLibre |
| Yerel Veritabanı | Room |
Proje, sorumlulukların ayrılmasını ve ölçeklenebilirliği sağlamak amacıyla çok modüllü (multi-module) bir yapı izlemektedir:
| Modül | Açıklama |
|---|---|
| :app | Ana Android uygulama modülü. |
| :domain | İş mantığı (business logic), kullanım durumları (use cases) ve depo (repository) arayüzlerini içeren saf Kotlin modülü. |
| :data | Depo (repository) uygulamaları, veri kaynakları ve TDLib entegrasyonu. |
| :presentation | Kullanıcı arayüzü (UI) bileşenleri, ekranlar ve görünüm modelleri (MVI Store'ları). |
| :core | Modüller genelinde kullanılan ortak yardımcı sınıflar ve uzantılar (extensions). |
| :baselineprofile | Uygulama başlangıcı ve performans optimizasyonu için Baseline Profilleri. |
Bu proje GNU General Public License v3.0 (GNU Genel Kamu Lisansı v3.0) kapsamında lisanslanmıştır.



