الوحدة 15: المشروع النهائي
هدف المشروع
تطوير تطبيق كامل يوضح إتقانك لـ Spring Boot من خلال دمج المفاهيم التي تعلمتها طوال الدورة.
المدة المقدرة: 20-30 ساعة
خيارات المشروع
اختر أحد المشاريع الأربعة التالية:
الخيار أ: منصة التجارة الإلكترونية
منصة تجارة إلكترونية كاملة مع:
- كتالوج المنتجات
- إدارة السلة
- نظام الطلبات
- الدفع (محاكاة)
- الإشعارات
الخيار ب: نظام إدارة المهام
نظام إدارة المهام/المشاريع مع:
- إدارة المشاريع والمهام
- إسناد المهام
- تتبع الوقت
- التقارير والإحصائيات
- إشعارات في الوقت الحقيقي
الخيار ج: API للحجز
نظام حجز (فنادق، مطاعم، فعاليات) مع:
- كتالوج الموارد
- التوافر والتقويم
- عملية الحجز
- التأكيد والتذكيرات
- لوحة تحكم إدارية
الخيار د: التوثيق عبر البريد الإلكتروني (موصى به)
نظام توثيق كامل مع:
- تسجيل مع التحقق عبر البريد الإلكتروني
- تسجيل دخول JWT
- استعادة كلمة المرور عبر البريد الإلكتروني
- إدارة الأدوار (USER/ADMIN)
- إدارة المستخدمين
الخيار هـ: نموذج الاتصال وإدارة العملاء المحتملين
نظام نموذج اتصال مع إدارة العملاء المحتملين (CRM مبسط):
- نموذج اتصال عام → ينشئ تلقائيًا عميل محتمل
- خط تحويل (NEW → CONTACTED → QUALIFIED → CONVERTED)
- تخزين PostgreSQL للعملاء المحتملين، الرسائل والملاحظات
- إرسال رسائل بريد إلكتروني تلقائية (إشعار إداري + تأكيد)
- تذكيرات تلقائية للعملاء المحتملين غير المتصلين (@Scheduled)
- لوحة تحكم إدارية مع إحصائيات الخط
المتطلبات التقنية
إلزامية (70 نقطة)
| الفئة | المتطلب | النقاط |
|---|---|---|
| الهندسة المعمارية | هيكل MVC نظيف | 5 |
| فصل الطبقات (Controller/Service/Repository) | 5 | |
| DTOs لنقل البيانات | 5 | |
| API REST | نقاط نهاية CRUD كاملة | 5 |
| رموز HTTP مناسبة | 3 | |
| التحقق من المدخلات (@Valid) | 5 | |
| التخزين | Spring Data JPA | 5 |
| العلاقات بين الكيانات (OneToMany, ManyToMany) | 5 | |
| استعلامات مخصصة | 3 | |
| الأمان | تكوين Spring Security | 5 |
| توثيق JWT | 5 | |
| الأدوار والتصاريح | 4 | |
| الاختبارات | اختبارات وحدات (حد أدنى 10) | 5 |
| اختبارات تكامل (حد أدنى 5) | 5 | |
| تغطية > 60% | 5 |
اختيارية (30 نقطة إضافية)
| الفئة | المتطلب | النقاط |
|---|---|---|
| التخزين المؤقت | Redis caching | 5 |
| المراسلة | تكامل RabbitMQ | 5 |
| WebSocket | الوقت الحقيقي | 5 |
| Docker | Dockerfile + docker-compose | 5 |
| CI/CD | خط أنابيب GitHub Actions | 5 |
| التوثيق | Swagger/OpenAPI | 5 |
| المراقبة | Actuator + Prometheus | 5 |
| الخدمات المصغرة | هندسة موزعة | 10 |
هيكل المشروع
projet-final/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── projet/
│ │ │ ├── ProjetApplication.java
│ │ │ ├── config/
│ │ │ │ ├── SecurityConfig.java
│ │ │ │ └── WebConfig.java
│ │ │ ├── controller/
│ │ │ │ ├── AuthController.java
│ │ │ │ └── ...Controller.java
│ │ │ ├── dto/
│ │ │ │ ├── request/
│ │ │ │ └── response/
│ │ │ ├── exception/
│ │ │ │ ├── GlobalExceptionHandler.java
│ │ │ │ └── ...Exception.java
│ │ │ ├── model/
│ │ │ │ └── ...Entity.java
│ │ │ ├── repository/
│ │ │ │ └── ...Repository.java
│ │ │ ├── security/
│ │ │ │ ├── JwtService.java
│ │ │ │ └── ...
│ │ │ └── service/
│ │ │ └── ...Service.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── application-dev.yml
│ │ └── application-prod.yml
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── projet/
│ ├── controller/
│ ├── service/
│ └── repository/
├── docker-compose.yml
├── Dockerfile
├── README.md
└── pom.xml
التسليمات
1. الكود المصدري
- مستودع GitHub عام أو خاص
- كود نظيف وموثق
- README.md كامل
2. التوثيق
يجب أن يحتوي README.md على:
- وصف المشروع
- التقنيات المستخدمة
- تعليمات التثبيت
- تعليمات التشغيل
- توثيق API (نقاط النهاية)
- لقطات شاشة/عروض توضيحية
3. العرض التوضيحي
- فيديو توضيحي (5-10 دقائق)
- أو عرض تقديمي مباشر
- عرض الميزات الرئيسية
- شرح الخيارات التقنية
معايير التقييم
الدرجة التقنية (60%)
| المعيار | الوصف | الوزن |
|---|---|---|
| الوظائف | يعمل التطبيق بشكل صحيح | 20% |
| الهندسة المعمارية | كود منظم وقابل للصيانة | 15% |
| الممارسات الجيدة | الالتزام باتفاقيات Spring | 15% |
| الاختبارات | التغطية وجودة الاختبارات | 10% |
الدرجة النوعية (25%)
| المعيار | الوصف | الوزن |
|---|---|---|
| الكود | الوضوح والقراءة | 10% |
| التوثيق | README والتعليقات | 10% |
| إدارة الأخطاء | المتانة | 5% |
درجة العرض (15%)
| المعيار | الوصف | الوزن |
|---|---|---|
| العرض التوضيحي | عرض واضح | 10% |
| الإجابات | إتقان الموضوع | 5% |
الجدول الزمني المقترح
| الأسبوع | المهام |
|---|---|
| 1 | التخطيط، إعداد المشروع، نموذج البيانات |
| 2 | API REST الأساسية، كيانات JPA، المستودع |
| 3 | خدمات الأعمال، التحقق، DTOs |
| 4 | الأمان، JWT، التوثيق |
| 5 | اختبارات الوحدات والتكامل |
| 6 | الميزات المتقدمة (التخزين المؤقت، المراسلة، إلخ.) |
| 7 | Docker، CI/CD، التوثيق |
| 8 | الانتهاء، الاختبارات، إعداد العرض التوضيحي |
الموارد
التوثيق الرسمي
الأدوات
- IntelliJ IDEA أو VS Code
- Postman أو Insomnia
- Docker Desktop
- Git
الأسئلة الشائعة
س: هل يمكنني العمل في فريق؟
ج: نعم، فرق من 2-3 أشخاص كحد أقصى. تزداد عبء العمل المتوقع بشكل متناسب.
س: هل يمكنني اقتراح مشروع آخر؟
ج: نعم، مع الموافقة المسبقة. يجب أن يظهر المشروع نفس المهارات.
س: أي قاعدة بيانات يجب استخدامها؟
ج: يوصى بـ PostgreSQL. H2 مقبولة للتطوير.
س: هل النشر إلزامي؟
ج: لا، لكنه موصى به بشدة (نقاط إضافية). الخيارات: Heroku، Railway، AWS، إلخ.
مثال على مشروع
راجع المواصفات التفصيلية لكل خيار:
- الخيار أ: التجارة الإلكترونية
- الخيار ب: إدارة المهام
- الخيار ج: الحجوزات
- الخيار د: التوثيق عبر البريد الإلكتروني (موصى به)
- الخيار هـ: نموذج الاتصال
حظاً موفقاً!
هذا المشروع هو فرصة لإظهار كل ما تعلمته.
لا تتردد في:
- طرح الأسئلة
- طلب التوضيحات
- مشاركة تقدمك