منصة تعلّم إلكتروني مصغّرة

منصة تعليم إلكتروني متكاملة مبنية بـ Laravel و Vue 3، تدعم أدوارًا مختلفة (مدير، مدرس، طالب)، ووحدات ودروسًا، واختبارات ذات عتبة نجاح قابلة للتعديل، وشهادات، وتتبع التقدم.

الدورمطوّر ويب متكامل (فردي)
السنة2026
Laravel 10Vue 3 (Composition API + Pinia)ViteMySQLRedisDockerSanctum (HttpOnly cookies + CSRF)PHPUnitVitestGitHub Actions
منصة تعلّم إلكتروني مصغّرة
3أدوار: مدير، مدرس، طالب
200 م.بالحد الأقصى لرفع ملف الدرس
0–100عتبة نجاح الاختبار قابلة للتعديل
Dockerبيئة تطوير ونشر قابلة للتكرار

التحدي

  • المشكلة كان الطلاب يكتفون بالمحاضرات السلبية دون شرح كافي. الحاجة لمنصة تتيح لهم الدراسة بالسرعة التي يفضلونها، واختيار المواد، والتقييم، والحصول على شهادات.
  • القيود عمل فردي، تعلم Laravel وDocker من الصفر، استقرار محلي ضعيف (XAMPP)، ضيق الوقت قبل العرض، بدون ميزانية.
  • أكبر عائق فصل صلاحيات الأدوار (مدير، مدرس، طالب) كان معقدًا. توقفت XAMPP عن العمل يوم العرض التقديمي.
  • السبب تعقيد نمذجة الأدوار، وعدم استقرار Apache/MySQL في XAMPP.
  • الحل إعادة صياغة منطق الأدوار، توليد مفاتيح جديدة، إعادة هيكلة قاعدة البيانات، والانتقال من XAMPP إلى WAMP.

المقاربة

  • صلاحيات 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.
الأثر

نالت إشادة الأستاذ ولجنة التحكيم لتلبيتها احتياجات التعلّم الفعلية؛ مع إصدار الشهادات عند إتمام المقرر.

لقطات الشاشة

ما سأفعله بشكل مختلف

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