دراسة حالة · 2026
منصة تعلّم إلكتروني مصغّرة
منصة تعليم إلكتروني متكاملة مبنية بـ Laravel و Vue 3، تدعم أدوارًا مختلفة (مدير، مدرس، طالب)، ووحدات ودروسًا، واختبارات ذات عتبة نجاح قابلة للتعديل، وشهادات، وتتبع التقدم.
Laravel 10Vue 3 (Composition API + Pinia)ViteMySQLRedisDockerSanctum (HttpOnly cookies + CSRF)PHPUnitVitestGitHub Actions

3أدوار: مدير، مدرس، طالب
200 م.بالحد الأقصى لرفع ملف الدرس
0–100عتبة نجاح الاختبار قابلة للتعديل
Dockerبيئة تطوير ونشر قابلة للتكرار
01
التحدي
- المشكلة كان الطلاب يكتفون بالمحاضرات السلبية دون شرح كافي. الحاجة لمنصة تتيح لهم الدراسة بالسرعة التي يفضلونها، واختيار المواد، والتقييم، والحصول على شهادات.
- القيود عمل فردي، تعلم Laravel وDocker من الصفر، استقرار محلي ضعيف (XAMPP)، ضيق الوقت قبل العرض، بدون ميزانية.
- أكبر عائق فصل صلاحيات الأدوار (مدير، مدرس، طالب) كان معقدًا. توقفت XAMPP عن العمل يوم العرض التقديمي.
- السبب تعقيد نمذجة الأدوار، وعدم استقرار Apache/MySQL في XAMPP.
- الحل إعادة صياغة منطق الأدوار، توليد مفاتيح جديدة، إعادة هيكلة قاعدة البيانات، والانتقال من XAMPP إلى WAMP.
02
المقاربة
- صلاحيات Laravel Gates/Middleware مع حراس توجيه Vue Router.
- الهيكلة Laravel API أولاً + SPA بـ Vue 3، مصادقة عبر Sanctum (ملفات تعريف ارتباط HttpOnly + CSRF، بدون JWT).
- الكيانات Cours، Module، Lecon، Quiz، Question، TentativeQuiz، Inscription مع تتبع الدروس المكتملة.
- التصحيح في معاملة واحدة، يحسب الدرجات ويقارن مع scoreMinimal القابل للتعديل (0–100) ويخزن نتيجة المحاولة؛ إخفاء الإجابات الصحيحة والتحقق من الصلاحية.
- الأمان حدود محاولات للاختبار وتسجيل الدخول.
- الملفات رفع الدروس حتى 200 ميجا.
- الأداء والجودة تحميل مسبق لتفادي N+1، Redis للإحصائيات، ترقيم الصفحات، تصدير CSV، اختبارات وحدة وميزة، CI.
- البنية التحتية Docker مع Apache+PHP-FPM وNginx وMySQL 8 وRedis 7، النشر عبر AlwaysData + Docker.
الأثر
نالت إشادة الأستاذ ولجنة التحكيم لتلبيتها احتياجات التعلّم الفعلية؛ مع إصدار الشهادات عند إتمام المقرر.
03
لقطات الشاشة

04
ما سأفعله بشكل مختلف
- توقف خادم XAMPP (Apache/MySQL) يوم العرض التقديمي. في المرة القادمة سأبدأ باستخدام Docker من أول commit — فقد جعل البيئة قابلة للتكرار، لكنني تبنّيته متأخرًا.
- تعقّد فصل صلاحيات المدير والمدرس والطالب لأنني صمّمته أثناء البناء. سأكتب مصفوفة الأدوار والسياسات قبل أول متحكم.
- تعلّمت Laravel وDocker من الصفر تحت ضغط الموعد النهائي — سأخصّص مرحلة استكشاف للأدوات غير المعروفة بدل تعلّمها أثناء التطوير.