تفاصيل العمل

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 جديدة في المستقبل.

بطاقة العمل