تفاصيل العمل

1. فكرة المشروع

مشروع "طريقي" هو تطبيق تفاعلي يعتمد على فكرة التعهيد الجماعي أو المشاركة المجتمعية (Crowdsourcing). يهدف التطبيق إلى مساعدة السائقين والمستخدمين من خلال السماح لهم بإنشاء بلاغات (Reports) عن حالة الطرق (مثل: الحوادث، الزحام المروري، إصلاحات الطرق، أو أي عوائق أخرى). يتم عرض هذه البلاغات على خريطة تفاعلية (Map) داخل التطبيق ليتمكن باقي المستخدمين من رؤيتها وتحديث مساراتهم بناءً عليها.

2. ما يقدمه للمجتمع (Community Impact)

تعزيز السلامة المرورية: من خلال تنبيه السائقين للحوادث والمخاطر المفاجئة على الطريق في الوقت الفعلي (Real-time).

توفير الوقت والجهد: مساعدة المستخدمين على تجنب الطرق المزدحمة أو المغلقة واختيار مسارات بديلة أسرع.

خلق بيئة تعاونية: تعزيز روح التعاون بين أفراد المجتمع حيث يساعد السائقون بعضهم البعض من خلال مشاركة حالة الطريق أولاً بأول.

دعم البنية التحتية: يمكن للبيانات التي يتم جمعها أن تشكل مصدراً مفيداً للجهات المختصة للتعرف على الطرق التي تحتاج إلى صيانة مستمرة.

3. الجوانب التقنية المستخدمة (Technical Stack & Tools)

المشروع مبني باستخدام إطار عمل Flutter، ويتبع هيكلية منظمة جداً تعتمد على تقسيم التطبيق إلى مجلدات أساسية (features للمميزات، و core للأدوات المشتركة). تم استخدام العديد من التقنيات الحديثة وأفضل الممارسات البرمجية:

إدارة الحالة

تم الاعتماد على مكتبة BLoC (flutter_bloc) لإدارة حالة التطبيق، وهي واحدة من أقوى أنماط إدارة الحالة لفصل واجهة المستخدم (UI) عن منطق العمل (Business Logic)، مع استخدام BlocObserver لمراقبة تتبع الأحداث (Events) وتغيرات الحالة.

التواصل مع الخوادم (Networking & API):

تم استخدام مكتبة Dio لعمل طلبات الـ HTTP والتواصل مع الـ Backend بفعالية، مدعومة بمكتبة pretty_dio_logger لتسجيل ومراقبة الشبكة والطلبات (Network Logging).

الخرائط وتحديد المواقع (Maps & Location Services):

تكامل كامل مع خرائط جوجل عبر google_maps_flutter.

استخدام geolocator لتحديد موقع المستخدم الحالي (GPS) بدقة.

استخدام geocoding لتحويل الإحداثيات (Coordinates) إلى عناوين نصية مقروءة والعكس.

حقن الاعتماديات (Dependency Injection):

استخدام مكتبة GetIt (get_it) كـ Service Locator لإدارة الكائنات (Objects) وتسهيل اختبار الكود (Testing) وبناء هيكلية نظيفة (Clean Architecture).

الخدمات السحابية والإشعارات (Backend Services & Notifications):

ربط التطبيق بخدمات

تفعيل ميزة الإشعارات الفورية (Push Notifications) باستخدام Firebase Cloud Messaging (FCM) بالتعاون مع

flutter_local_notifications لضمان وصول التنبيهات للمستخدمين حتى وإن كان التطبيق يعمل في الخلفية (Background).

التخزين المحلي

استخدام shared_preferences لتخزين البيانات البسيطة محلياً على الجهاز (مثل تفضيلات المستخدم ورموز التوثيق Tokens).

واجهة وتجربة المستخدم (UI / UX):

الاستجابة للشاشات (Responsiveness): استخدام flutter_screenutil لضمان توافق التصميم مع جميع أحجام الشاشات.

مؤشرات التحميل (Loading States): استخدام مكتبة skeletonizer لعرض واجهات تحميل وهمية جذابة (Shimmer Effect) أثناء جلب البيانات.

الوسائط (Media): التعامل مع الصور بذكاء عبر cached_network_image لتحميل الصور من الإنترنت وتخزينها مؤقتاً (Caching)، واستخدام flutter_svg لعرض الأيقونات والرسومات الموجهة بجودة عالية، ومكتبة image_picker لتمكين المستخدم من التقاط صور للبلاغات.

تعدد اللغات (Localization):

تم تجهيز التطبيق ليدعم لغات متعددة بسلاسة باستخدام مكتبة Easy Localization.

البرمجة الوظيفية ومعالجة الأخطاء (Functional Programming):

استخدام حزمة Dartz لتطبيق مفاهيم البرمجة الوظيفية، وخاصة التعامل مع الأخطاء بشكل آمن عبر الـ Either (مما يمنع حدوث انهيار للتطبيق بسبب أخطاء غير متوقعة).

إدارة الصلاحيات (Permissions Management):

استخدام permission_handler لطلب صلاحيات حساسة من المستخدم مثل الوصول إلى الموقع الجغرافي والكاميرا بشكل آمن ومنظم.

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
تاريخ الإضافة
تاريخ الإنجاز
المهارات