Kotlin Multiplatform Compose Multiplatform Ktor Course Challenge

تطبيق تشيرب للمراسلة

تطبيق مراسلة متزامن يعمل في الوقت الفعلي لأنظمة Android وiOS وسطح المكتب، مع مشاركة المنطق البرمجي بنسبة 100٪.

Chirp Messaging Client Mockup

نظرة عامة

Chirp هو حل مراسلة متكامل بمستوى المؤسسات (Enterprise-grade)، مُصمم لإبراز أساليب التطوير الحديثة متعددة المنصات (Cross-platform). بُني التطبيق بالكامل بلغة Kotlin، ويعتمد على Kotlin Multiplatform (KMP) لإدارة الحالة المشتركة، و Compose Multiplatform (CMP) لتوحيد بناء واجهات المستخدم عبر الهواتف وسطح المكتب.

التحدي

يتطلب تطوير تطبيق مراسلة التعامل مع تدفقات بيانات غير متزامنة بشكل مكثف، وإدارة اتصالات الشبكة غير المستقرة، لضمان تجربة مستخدم سلسة عبر أنظمة التشغيل المختلفة.

التحدي الهندسي الأساسي تمثل في مشاركة أكبر قدر ممكن من الكود دون المساومة على الأداء الأصلي (Native Performance). وهذا تطلب توحيد بروتوكولات WebSockets، والتخزين المحلي باستخدام SQLite (لبنية تعمل بدون إنترنت - Offline-first)، ومكونات واجهة المستخدم من قاعدة برمجية واحدة، مع مراعاة واجهات برمجة التطبيقات (APIs) الخاصة بكل منصة لدعم الإشعارات وإدارة الملفات.

القرارات المعمارية والتقنية

للتغلب على هذه التحديات، تم بناء Chirp على أساس المعمارية النظيفة متعددة الوحدات (Multi-Module Clean Architecture). يفرض التطبيق تدفقاً أحادي الاتجاه للبيانات (UDF) بصرامة، حيث تتجه الحالة (State) للأسفل وتُنقل الأحداث (Events) للأعلى.

التقسيم الهيكلي

  • تغليف الميزات (Feature Encapsulation): تُقسم الوحدات إلى طبقات صارمة (مثل feature:auth، feature:chat)، مما يعزل المنطق البرمجي للأعمال عن طبقة واجهة المستخدم بالكامل.
  • تزامن أولوية العمل بلا إنترنت (Offline-First): تطبيق موثوق باستخدام Room/SQLite يضمن التخزين المؤقت للرسائل محلياً، مما يتيح استخدام التطبيق بالكامل مع جدولة العمليات في الخلفية أثناء انقطاع الشبكة.
  • اتصال ثنائي الاتجاه في الوقت الفعلي: يدير Ktor Client طبقة الشبكات للتعامل بسلاسة مع اتصالات REST وقنوات WebSockets، مما يضمن تسليم الرسائل فوراً دون الحاجة لاستعلامات مستمرة (Polling).
  • حقن التبعيات (Dependency Injection): بُني باستخدام مكتبة Koin لتوفير الاعتماديات بشكل آمن وأصلي عبر أنظمة Android وiOS وسطح المكتب.

اتساق المنصات

لضمان دقة بصرية متناهية وانسيابية في التأثيرات الحركية، اعتمدت على إطار Compose Multiplatform (CMP). تتم معالجة الخطوط الديناميكية ودعم اتجاه النصوص (عربي/إنجليزي) بفعالية عبر استخدام روابط expect/actual المركزية المتصلة بوحدة نظام التصميم (Design System).

الأثر والنتائج

  • تحقيق مشاركة للكود بنسبة 100% للمنطق البرمجي للأعمال عبر أنظمة Android، iOS، وسطح المكتب باستخدام KMP.
  • دمج اتصال لحظي (Zero-polling) عبر بروتوكولات WebSockets، مما أدى إلى تقليل الحمل على الخوادم (Backend) وأوقات الاستجابة.
  • توفير إمكانيات ممتازة للعمل بلا إنترنت تتيح التفاعل المستمر مع البيانات مع مزامنة خلفية تلقائية بمجرد عودة الاتصال.

التقنيات المستخدمة

Language Kotlin 2.2
Architecture Clean MVI
Networking Ktor WebSockets
UI Framework Compose MP
Persistence Room DB
DI Framework Koin
Push Delivery Firebase Cloud
Async Coroutines/Flow