Kotlin Multiplatform Compose Multiplatform Spring Boot Course Challenge

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

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

تطبيق Chirp للمراسلة Mockup

نظرة عامة

Chirp تطبيق مراسلة متعدد المنصات مبني بالكامل بلغة Kotlin. يعتمد على Kotlin Multiplatform (KMP) لإدارة الحالة المشتركة، وعلى Compose Multiplatform (CMP) لتوحيد عرض واجهة المستخدم عبر Android، iOS، وسطح المكتب.

التحدي

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

التحدي الهندسي الأساسي تمثل في مشاركة أكبر قدر ممكن من الكود دون المساومة على الأداء الأصلي (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 يضمن التخزين المؤقت للرسائل محلياً، مما يتيح استخدام التطبيق بالكامل مع جدولة العمليات في الخلفية أثناء انقطاع الشبكة.
  • اتصال ثنائي الاتجاه في الوقت الفعلي: تعمل الواجهة الخلفية على Spring Boot وتوفر نقاط نهاية REST وقنوات WebSockets، حيث تتولى قنوات WebSockets تسليم الرسائل في الوقت الفعلي دون الحاجة لاستعلامات مستمرة (Polling).
  • حقن التبعيات (Dependency Injection): بُني باستخدام مكتبة Koin لتوفير الاعتماديات بشكل آمن وأصلي عبر أنظمة Android وiOS وسطح المكتب.

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

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

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

  • مشاركة الكود بنسبة 100% للمنطق البرمجي للأعمال عبر Android، iOS، وسطح المكتب عبر KMP.
  • تسليم عبر WebSocket (بدون استعلام مستمر)، مما خفّض حمل الخادم وزمن الاستجابة.
  • تخزين offline-first مع مزامنة خلفية تلقائية بمجرد عودة الاتصال.

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

Language Kotlin 2.2
Architecture Clean MVI
Backend Spring Boot
UI Framework Compose MP
Persistence Room DB
DI Framework Koin
Push Delivery Firebase Cloud
Async Coroutines/Flow