الوظائف (Functionality)
تسجيل الدخول:
يمكن للمستخدم تسجيل الدخول باستخدام رقم تعريف شخصي (PIN) ثابت (0000) حاليًا.
يقوم التطبيق بإنشاء قاعدة بيانات جديدة عند تسجيل الدخول لأول مرة ويتم تشفيرها.
إدارة الحسابات المصرفية:
عرض قائمة بحسابات المستخدم المصرفية.
إمكانية التنقل داخل تاريخ المعاملات الخاصة بكل حساب.
الإيداع والسحب:
يوفر التطبيق ميزات للإيداع والسحب من الحسابات الادخارية.
واجهة المستخدم:
يحتوي التطبيق على واجهة مستخدم تحتوي على شاشة تسجيل الدخول والقائمة الجانبية.
لا تؤدي بعض عناصر القائمة إلى أي وظائف، باستثناء خيار "تسجيل الخروج".
وظائف تجريبية:
بعض وظائف التطبيق تعتمد على محاكاة (Mock) لعمليات الخادم الخلفي والوظائف الأخرى.
الجوانب التقنية (Technicality)
البنية المعمارية (Architecture):
يعتمد التطبيق على بنية "النظيفة" (Clean Architecture).
مكونات البنية تتضمن:
ViewModel: يتم التفاعل مع العرض (View) من خلاله.
LiveData: يُستخدم لتحديث الواجهة بشكل مستمر.
UseCases: تحتوي على المنطق الرئيسي للتطبيق.
Gateways: تمثل واجهات الوصول إلى البيانات المحلية أو البعيدة.
البيانات:
قاعدة البيانات (Database):
يتم استخدام قاعدة بيانات مشفرة (SQLCipher) للتعامل مع البيانات.
قاعدة البيانات تدير عدة مصادر بيانات (محلية وبعيدة).
التخزين المؤقت (Caching):
يوفر التطبيق آلية للتخزين المؤقت لمصادر البيانات.
تقنيات وتكاملات:
Koin: يُستخدم كإطار عمل لإدارة الاعتماديات (Dependency Injection).
Paging: لتسهيل عرض كميات كبيرة من البيانات في القوائم.
Android KTX وLifeCycles: لتحسين إنتاجية التطوير.
Navigation Component: لإدارة التنقل بين شاشات التطبيق باستخدام URIs بدلاً من IDs.
الاختبار والمحاكاة:
تم توفير أمثلة لاختبار الوحدات (Unit Testing) لبعض الميزات.
يمكن محاكاة ميزات معينة مثل "الحسابات" باستخدام وحدات وهمية (Fake Modules).
الخادم الخلفي (Backend):
الخادم الخلفي محاكٍ بالكامل، مما يسمح بتغيير أو استبدال التنفيذ بسهولة.
ملاحظات أمنية:
يتم إنشاء قاعدة البيانات وتشفيرها عند تسجيل الدخول.
يتم استخدام رقم تعريف شخصي ثابت (0000) لأغراض التوضيح، مع ملاحظة أن إدخال البيانات السرية بشكل صريح (مثل الرقم السري) غير آمن.