**ConCurrency - تطبيق تحويل العملات**
**عــن التــطــبـيــق**
تطبيق ConCurrency يهدف إلى توفير تجربة سهلة ودقيقة للمستخدمين لتحويل العملات. يدعم التطبيق مجموعة واسعة من العملات ويوفر أسعار صرف محدثة في الوقت الفعلي. يتميز التطبيق بواجهة مستخدم مريحة وسهلة الاستخدام، وسيكون متاحًا على منصات متعددة، بما في ذلك الويب، أندرويد، وiOS.
**الــمــمــيــزات**
- **تحويل العملات**: يمكن للمستخدمين إدخال المبلغ الذي يرغبون في تحويله، اختيار العملة المصدر، وتحديد العملة المستهدفة. يقوم التطبيق بعرض المبلغ المحول بناءً على سعر الصرف الحالي.
- **مقارنة العملات**: يمكن للمستخدم إدخال المبلغ الذي يرغب في تحويله، اختيار العملة المصدر، وتحديد عدة عملات مستهدفة للمقارنة. يعرض التطبيق المبالغ المحولة لجميع العملات المستهدفة بناءً على سعر الصرف الحالي.
- **أسعار صرف في الوقت الفعلي**: يقوم التطبيق بجلب أسعار الصرف المحدثة استنادًا إلى العملة المصدر المحددة.
- **إدارة العملات المفضلة**: يمكن للمستخدم تحديد العملات المفضلة للوصول السريع إليها، مع إمكانية حفظ قائمة العملات المستخدمة بشكل متكرر وإدارتها بسهولة.
**الــتــقــنـيــة**
- **الهيكل المعماري**: يعتمد التطبيق على هيكل **MVVM** (النموذج - العرض - نموذج العرض) الذي يضمن فصل واضح للمكونات ويسهّل الاختبار وتوسيع التطبيق.
- **الهيكلية النظيفة (Clean Architecture)**: تم تصميم التطبيق وفقًا لمبادئ الهيكلية النظيفة، حيث يتم تقسيمه إلى طبقات واضحة - العرض (Presentation)، المجال (Domain)، البيانات (Data) - لتحقيق قابلية الصيانة والتنظيم.
- **واجهة المستخدم**: تم بناء الواجهة باستخدام **Jetpack Compose**، وهي أداة حديثة لتطوير واجهات أندرويد تسهل عملية التطوير باستخدام نهج برمجي إعلاني.
- **التنقل بين الشاشات**: يُستخدم مكون **Navigation** لإدارة التنقل بين شاشات التطبيق بطريقة متسقة وقابلة للتنبؤ.
- **قاعدة البيانات**: يتم استخدام قاعدة بيانات **Room** لحفظ البيانات محليًا بشكل موثوق وكفاءة.
- **الاتصال بالشبكة**: يعتمد التطبيق على مكتبة **Retrofit** للتعامل مع طلبات الشبكة واسترجاع البيانات من الخوادم.
- **إدارة العمليات المتزامنة**: تُستخدم مكتبة **Coroutines** لإدارة العمليات غير المتزامنة، مما يحسن من تجربة المستخدم من خلال تنفيذ المهام بسلاسة دون تعطيل الواجهة.
- **حقن التبعيات**: يعتمد التطبيق على مكتبة **Hilt** لتبسيط إدارة التبعيات وتحسين اختبار الكود وصيانته.
- **اختبار الكود ومعالجة الأخطاء**:
- يتم استخدام اختبارات الوحدة للتحقق من مكونات الكود بشكل مستقل.
- يتم التعامل مع أخطاء الشبكة بطريقة سلسة باستخدام **Retrofit** لعرض رسائل مفهومة للمستخدم.
- يتم منع الأعطال من خلال التعامل مع الأخطاء غير المتوقعة وتسجيلها لتحسين استقرار التطبيق.
- **تحميل الصور**: تُستخدم مكتبة **Coil** لتحميل الصور بكفاءة مع دعم التخزين المؤقت.
- **الرسوم المتحركة**: تم دمج رسوم متحركة باستخدام **Lottie** لتوفير تجربة بصرية جذابة وتفاعلية.
**الأذونات المطلوبة**
يتطلب تطبيق ConCurrency الأذونات التالية:
- **الوصول الكامل للشبكة**: تُستخدم أذونات الوصول للشبكة لتحويل العملات، المقارنة بين العملات، والحصول على أسعار الصرف في الوقت الفعلي.