One of the projects I worked on is a News App built using Flutter. التطبيق بيسمح للمستخدم إنه يتصفح آخر الأخبار، والأخبار متقسمة إلى أقسام زي Business وSports وTechnology، والبيانات بيتم جلبها بشكل مباشر من News API.
Architecture:
أنا طبقت Clean Architecture علشان أخلي المشروع منظم، سهل التعديل، وسهل إضافة Features جديدة بدون التأثير على باقي أجزاء المشروع.
المشروع متقسم إلى 3 Layers:
1. Presentation Layer:
* دي الطبقة المسؤولة عن الـ UI والتعامل مع المستخدم.
* استخدمت Bloc/Cubit في State Management لإدارة الحالات المختلفة زي Loading وSuccess وError.
* أي Interaction من المستخدم بيبدأ من الطبقة دي.
2. Domain Layer:
* دي الطبقة اللي فيها Business Logic الخاص بالتطبيق.
* بتحتوي على Entities و Use Cases، وهي مستقلة عن أي Framework أو طريقة جلب البيانات، وده بيخلي الكود أسهل في الاختبار والصيانة.
3. Data Layer:
* دي الطبقة المسؤولة عن التعامل مع News API باستخدام HTTP requests.
* بتحتوي على Repositories و Models.
* استخدمت Repository Pattern علشان أفصل مصدر البيانات عن باقي التطبيق، وبالتالي لو غيرت الـ API أو أضفت مصدر بيانات جديد مش هحتاج أعدل في باقي المشروع.
Features:
* جلب الأخبار بشكل Real-time من الـ API.
* عرض الأخبار حسب التصنيفات المختلفة.
* التعامل مع الأخطاء وعرض Loading Indicator أثناء تحميل البيانات.
* تصميم Responsive UI يشتغل بشكل كويس على أحجام الشاشات المختلفة.
Technologies Used:
* Flutter & Dart
* REST APIs (HTTP package)
* Bloc/Cubit for State Management
استخدام Clean Architecture مع Bloc/Cubit ساعدني أكتب كود منظم، سهل الصيانة، وسهل تطويره وإضافة Features جديدة في المستقبل.