اسے دوسری زبانوں میں پڑھیں: English, Русский، Türkçe, 한국어, Español
مونوگرام (MonoGram) اینڈرائیڈ کے لیے ایک جدید، انتہائی تیز، اور شاندار غیر سرکاری ٹیلیگرام کلائنٹ ہے۔ اسے Jetpack Compose اور Material Design 3 کے ساتھ بنایا گیا ہے، اور یہ سرکاری TDLib کی مدد سے ایک مقامی (native) اور ہموار تجربہ فراہم کرتا ہے۔
Important
مونوگرام فی الحال فعال ترقی (active development) کے مراحل میں ہے۔ متواتر اپ ڈیٹس، تعمیراتی تبدیلیوں، اور کبھی کبھار بگز کی توقع رکھیں۔
Boosty پر اس پروجیکٹ کی حمایت کریں۔
- آزاد کلائنٹ (Independent Client) — یہ Telegram for Android کا فورک نہیں ہے۔ MonoGram ایک مکمل طور پر نئے سرے سے بنایا گیا آزاد پروجیکٹ ہے۔
- Material Design 3 — ایک خوبصورت، موافق (adaptive) UI جو فونز، ٹیبلیٹس، اور فولڈ ایبلز پر بہترین نظر آتا ہے۔
- محفوظ (Secure) — بائیو میٹرک لاکنگ اور انکرپٹڈ لوکل اسٹوریج شامل ہے۔
- میڈیا سے بھرپور (Media Rich) — ExoPlayer اور Coil 3 کے ساتھ اعلیٰ کارکردگی والا میڈیا پلے بیک۔
- تیز اور موثر (Fast & Efficient) — Kotlin Coroutines کی مدد سے چلنے والا اور کارکردگی کے لیے آپٹمائزڈ۔
- کلین آرکیٹیکچر (Clean Architecture) — ڈومین (Domain)، ڈیٹا (Data)، اور پریزنٹیشن (Presentation) لیئرز کے ساتھ کام کی واضح تقسیم۔
- MVI پیٹرن — MVIKotlin کا استعمال کرتے ہوئے قابل پیشین گوئی اسٹیٹ مینجمنٹ (state management)۔
- کوئی NFT یا کرپٹو نہیں — مونوگرام میں کبھی بھی NFT پروموشنز، تحائف یا ٹیلیگرام کی جانب سے پیش کیا گیا کوئی ایسا فیچر شامل نہیں ہوگا جسے ہم میسجنگ ایپ کے دائرہ کار سے باہر سمجھتے ہیں۔
پروجیکٹ کو مقامی طور پر سیٹ اپ کرنے کے لیے ان اقدامات پر عمل کریں۔
- Android Studio: لیڈی بگ (Ladybug) یا اس سے نیا (تجویز کردہ)۔
- JDK: جاوا 17 یا اس سے نیا۔
git clone --recurse-submodules https://github.com/monogram-android/monogram.git
cd monogramٹیلیگرام سرورز سے جڑنے کے لیے، آپ کو اپنی API اسناد (credentials) درکار ہوں گی۔
- my.telegram.org پر لاگ ان کریں۔
- API development tools پر جائیں۔
- اپنی
App api_idاورApp api_hashحاصل کرنے کے لیے ایک نئی ایپلیکیشن بنائیں۔ - پروجیکٹ کی روٹ ڈائرکٹری میں
local.propertiesنام کی ایک فائل بنائیں (اگر یہ پہلے سے موجود نہیں ہے)۔ - درج ذیل لائنیں شامل کریں:
API_ID=12345678
API_HASH=your_api_hash_here- Firebase console پر لاگ ان کریں۔
- ایک نیا پروجیکٹ بنائیں۔
- اپنی مطلوبہ
applicationIdکے ساتھ ایک نئی ایپلیکیشن شامل کریں۔ اگر آپ کے پاس مختلف IDs کے ساتھ متعدد ایپلیکیشنز ہیں، تو متعدد Firebase ایپلیکیشنز بنائیں۔ بائی ڈیفالٹ، ڈیبگ اور ریلیز بلڈز کے لیےapplicationIdمختلف ہوتی ہے۔ google-services.jsonفائل ڈاؤن لوڈ کریں اور اسے app ماڈیول کی روٹ (monogram/app/google-services.json) میں کاپی کریں۔ اگر آپ نے متعدد ایپلیکیشنز بنائی ہیں، تو صرف تازہ ترین کنفیگریشن کاپی کریں۔- Cloud Messaging سیکشن پر جائیں۔
- Manage service accounts پر کلک کریں۔
- کھلنے والی ونڈو کے اوپری حصے میں Keys سیکشن منتخب کریں۔
- Add key پر کلک کریں اور JSON آپشن منتخب کریں۔ فائل کے ڈاؤن لوڈ ہونے کا انتظار کریں۔
- اس ٹیلیگرام API پیج پر واپس جائیں جہاں سے آپ نے اپنی App ID حاصل کی تھی۔
- FCM اسناد والے سیکشن کے آگے Update پر کلک کریں۔
- کھلنے والے پیج پر سروس اکاؤنٹ JSON اپ لوڈ کریں۔
اینیمیشنز کے لیے libvpx کو کمپائل کرنا ضروری ہے۔ یہ کام Gradle بلڈ شروع کرنے سے پہلے کرنا ہوگا، ورنہ بلڈ ناکام ہو سکتی ہے۔
- اپنی ورکنگ ڈائرکٹری
presentation/src/main/cppپر لے جائیں۔ build.shمیں اپناANDROID_NDK_HOMEشامل کریں۔build.shچلائیں اور مکمل ہونے تک انتظار کریں۔
- Android Studio میں پروجیکٹ کھولیں۔
- IDE کی انڈیکسنگ کی حد میں اضافہ کریں تاکہ
TdApi.java(TDLib ریپر) صحیح طرح انڈیکس ہو سکے۔ Android Studio یا IntelliJ IDEA میں، Help → Edit Custom Properties... کھولیں، نیچے دی گئی لائنز پیسٹ کریں، اور اگر کہا جائے تو IDE کو ری اسٹارٹ کریں:
# size in Kb
idea.max.intellisense.filesize=20480
# size in Kb
idea.max.content.load.filesize=20480- Gradle کو سنک کریں۔
appرن کنفیگریشن منتخب کریں۔- کوئی ڈیوائس کنیکٹ کریں یا ایمولیٹر اسٹارٹ کریں۔
- Run پر کلک کریں۔
اگر آپ کو سورس کوڈ سے TDLib بنانے کی ضرورت ہے، تو پہلے درکار انحصار (dependencies) انسٹال کریں۔ 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) — ریپوزٹری کو فورک کریں اور ایک فیچر برانچ بنائیں۔
- کوڈ اسٹائل (Code Style) — موجودہ Kotlin کوڈنگ اسٹائل اور کلین آرکیٹیکچر کی ہدایات پر عمل کریں۔
- PR جمع کرائیں — اپنی تبدیلیوں کی واضح تفصیل کے ساتھ
developبرانچ میں ایک Pull Request (PR) کھولیں۔
Important
- ٹیلیگرام API کی سروس کی شرائط (Terms of Service) کا احترام کریں۔
- یقینی بنائیں کہ آپ کا کوڈ تمام چیکس اور ٹیسٹس پاس کرتا ہے۔
- بگز (Bugs) — ایک ایشو کھولیں اور ٹائٹل میں
[Bug]ٹیگ استعمال کریں (مثال کے طور پر[Bug] App crashes on startup)۔ آپ بگ ٹریکر (Bug Tracker) پر تمام معلوم بگز بھی دیکھ سکتے ہیں۔ - فیچر کی درخواستیں (Feature Requests) —
[Feature]ٹیگ کے ساتھ ایک ایشو کھولیں (مثال کے طور پر[Feature] Support scheduled messages)۔ موجودہ فیچر کی درخواستیں فیچر بورڈ (Feature Board) پر مل سکتی ہیں۔
مونوگرام کمیونٹی کے تراجم کا خیرمقدم کرتا ہے! آپ اسٹرنگز ریسورس فائل میں ترمیم کر کے اپنی زبان کا حصہ ڈال سکتے ہیں۔
سورس اسٹرنگز presentation/src/main/res/values/string.xml پر واقع ہیں۔ نئی زبان شامل کرنے کے لیے، متعلقہ values-<locale>/string.xml فائل بنائیں (مثال کے طور پر جرمن کے لیے values-de/string.xml) اور وہاں اسٹرنگز کا ترجمہ کریں۔ اپنے ترجمے کے ساتھ ایک PR کھولیں اور ہم اسے مرج کر دیں گے۔
مونوگرام اینڈرائیڈ کے جدید ترین ترقیاتی ٹولز اور لائبریریوں کا استعمال کرتا ہے:
| کیٹیگری | لائبریریاں |
|---|---|
| زبان | Kotlin |
| UI ٹول کٹ | Jetpack Compose (Material 3) |
| آرکیٹیکچر | Decompose (Navigation), MVIKotlin |
| ڈیپینڈینسی انجیکشن | Koin |
| ایسنک (Async) | Coroutines & Flow |
| ٹیلیگرام کور | TDLib (Telegram Database Library) |
| امیج لوڈنگ | Coil 3 |
| میڈیا | Media3 (ExoPlayer) |
| نقشے (Maps) | MapLibre |
| لوکل ڈیٹا بیس | Room |
کام کی تقسیم اور اسکیل ایبلٹی کو یقینی بنانے کے لیے پروجیکٹ ملٹی ماڈیول ڈھانچے کی پیروی کرتا ہے:
| ماڈیول | تفصیل |
|---|---|
| :app | مرکزی اینڈرائیڈ ایپلیکیشن ماڈیول۔ |
| :domain | خالص Kotlin ماڈیول جس میں بزنس لاجک، یوز کیسز (use cases)، اور ریپوزٹری انٹرفیس شامل ہیں۔ |
| :data | ریپوزٹریز، ڈیٹا سورسز، اور TDLib انضمام کی عمل درآمد (Implementation)۔ |
| :presentation | UI کمپوننٹس، اسکرینز، اور ویو ماڈلز (MVI اسٹورز)۔ |
| :core | مشترکہ یوٹیلٹی کلاسز اور ایکسٹینشنز جو تمام ماڈیولز میں استعمال ہوتے ہیں۔ |
| :baselineprofile | ایپ کے اسٹارٹ اپ اور کارکردگی کو بہتر بنانے کے لیے بیس لائن پروفائلز (Baseline Profiles)۔ |
یہ پروجیکٹ GNU General Public License v3.0 کے تحت لائسنس یافتہ ہے۔



