التطبيق مبني باستخدام Flutter مع تهيئة مبكرة لـ Firebase وتشغيل واجهة عربية بالكامل (واجهة RTL وخط Tajawal)، إلى جانب تصميم لوني حديث مستمد من لون ذهبي وتخصيص شامل لعناصر الواجهة مثل الأزرار، الحقول، والـ SnackBars.
البنية تعتمد على MaterialApp يضبط المسارات الرئيسة لشاشة تسجيل الدخول ولوحتي المشرف والسائق، مع بوابة مصادقة تعتمد على Firebase Auth لبث حالة تسجيل الدخول وعرض الشاشة المناسبة تلقائيًا.
إدارة الهوية والأدوار
مكوّن AuthGate يتابع تدفق authStateChanges ويعيد توجيه المستخدمين غير الموثقين إلى شاشة الدخول، بينما يمرر الحسابات الموثقة إلى _RoleResolver لمطابقة الدور من Firestore أو مطالبات JWT وتفويض الوصول إلى لوحة المشرف أو السائق، مع واجهات مخصصة للأخطاء أو الأدوار غير المعروفة.
شاشة تسجيل الدخول توفر نموذج تحقق من البريد وكلمة المرور، مع معالجة أخطاء Firebase Auth، وخيارات مثل "تذكرني" ورسائل توست عربية، ضمن بطاقة مصممة بعناية للمظهر والهوية البصرية للنظام.
لوحة تحكم المشرف
لوحة المشرف محمية بمكوّن RoleGuard، وتعرض عبر IndexedStack تبويبًا للمعدات وآخر للسائقين، مع عدادات مباشرة مبنية على تدفقات Firestore لكل تبويب، وزر عائم لإنشاء سجلات جديدة حسب السياق.
تدعم الواجهة إنشاء السائقين بواجهة حوارية، وإدارة ربطهم بالمعدات ومزامنة بياناتهم في Auth وFirestore بشكل ذري عبر DriverAccountService، بالإضافة إلى نماذج كاملة لإضافة وتحرير المعدات مع حدود الصيانة الافتراضية وإمكانية إلغاء الحذف بعد تأكيد المستخدم.
عند حذف المعدات، يتم تنظيف سجلات الصيانة المرتبطة بدُفعات Firestore لتفادي تجاوز حدود العمليات، ما يضمن سلامة البيانات في المستودع السحابي.
لوحة تحكم السائق
لوحة السائق، المحمية أيضًا بـ RoleGuard، تعرض قائمة المعدات المعينة للمستخدم الحالي من خلال تدفق Firestore، مع حالات تحميل وخلو وأخطاء مصقولة وتجربة سحب للتحديث.
كل بطاقة معدة توفر تفاصيل عن الاستخدام والحدود، وتتحكم ديناميكيًا في إمكانية تسجيل ساعات الصيانة بناءً على تعيين السائق وأنواع الصيانة المتاحة، مع تحذيرات واضحة وألوان تنبيه مبنية على أقرب موعد صيانة مستحق.
الخدمات والعمليات الخلفية
EquipmentService يغلف جميع عمليات Firestore الخاصة بالمعدات: مراقبة تدفقات المعدات، إنشاء وتحديث وحذف السجلات، تسجيل ساعات الصيانة داخل معاملات تتحقق من ملكية السائق، وتوليد سجلات صيانة مع متبقي الساعات وحفظ الأختام الزمنية على مستوى الخادم.
DriverAccountService يدير دورة حياة حساب السائق: إنشاء مستخدمين في Firebase Auth (مع تطبيق ثانوي عند الحاجة)، مزامنة بياناتهم في مجموعة users وربطهم بالمعدات، وفك الارتباط عند الحاجة، مع التحقق من صحة البريد وكلمة المرور ومعالجة أخطاء Auth إلى رسائل مفهومة للمشرف.
هذه المنظومة تقدم نظامًا متكاملاً لإدارة معدات الصيانة والسائقين، يعتمد على Firebase كبنية تحتية سحابية، ويقدم تجربة عربية مخصصة للأدوار المختلفة ضمن تطبيق Flutter واحد.