نظام إدارة تعليمي (Learning Management System - LMS) - Backend API
نبذة عن المشروع
واجهة برمجة تطبيقات (RESTful API) مبنية بـ TypeScript و Express.js لإدارة منصة تعليمية تدعم ثلاثة أدوار مستخدمين: مدير (Admin)، مدرب (Coach)، وطالب (Student). يوفر النظام إدارة كاملة للمستخدمين والدورات التدريبية مع نظام مصادقة وصلاحيات متقدم.
أهم المميزات التقنية
1. نظام مصادقة وأمان متقدم
- تسجيل دخول وإنشاء حسابات عبر JWT (JSON Web Tokens).
- تشفير كلمات المرور باستخدام Argon2 (الذي يعتبر أقوى من bcrypt).
- حماية المسارات (Routes) عبر برمجيات وسيطة للتحقق من صحة التوكن.
2. نظام صلاحيات قائم على الأدوار (RBAC)
- دعم ثلاثة أدوار: مدير، مدرب، وطالب.
- صلاحيات المدير: إنشاء حسابات المدربين وإدارة جميع المستخدمين.
- صلاحيات المدرب والمدير: إضافة وتعديل الدورات التدريبية.
- صلاحيات الطالب: استعراض الدورات وتعديل البيانات الشخصية فقط.
3. إدارة الدورات التدريبية
- عمليات CRUD كاملة للدورات (إنشاء، قراءة، تعديل، حذف).
- نظام رفع صور للدورات باستخدام مكتبة Multer.
- ميزة منع تكرار الدورات بنفس العنوان والوصف لضمان جودة البيانات.
- الحذف التلقائي لملفات الصور من الخادم عند حذف الدورة المرتبطة بها.
4. هيكلية مشروع احترافية (Clean Architecture)
- بنية منظمة تعتمد على الوحدات (Modular): كل وحدة تحتوي على Controller و Service و Repository.
- تطبيق مبدأ فصل المسؤوليات (Separation of Concerns).
- استخدام Base Repository عام قابل لإعادة الاستخدام لجميع الكيانات (Entities).
- نظام مركزي لمعالجة الأخطاء عبر كلاس CustomError مخصص.
5. التحقق من البيانات (Data Validation)
- استخدام مكتبة Zod للتحقق من صحة البيانات الواردة للخادم.
- بناء مخططات (Schemas) منفصلة لكل وحدة (المصادقة، المستخدمين، الدورات).
- برمجية وسيطة مخصصة لربط عمليات التحقق بمسارات Express.
6. توحيد استجابات الـ API
- نظام موحد لشكل الاستجابات الناجحة والفاشلة لضمان تجربة متسقة للمبرمجين الذين سيتعاملون مع الـ API.
التقنيات المستخدمة (Tech Stack)
اللغة الأساسية: TypeScript
إطار العمل: Express.js 5
المصادقة: JWT
التشفير: Argon2
التحقق من البيانات: Zod
رفع الملفات: Multer
بيئة التشغيل: tsx
واجهات البرمجية (Endpoints) الرئيسية
وحدة المصادقة:
- تسجيل حساب جديد: POST /sign-up
- تسجيل الدخول: POST /sign-in
وحدة المستخدمين:
- عرض بيانات المستخدم الحالي: GET /me
- تعديل البيانات الشخصية: PUT /me
- إنشاء حساب مدرب (للمدير فقط): POST /coach
وحدة الدورات:
- عرض جميع الدورات: GET /
- إنشاء دورة جديدة مع صورة: POST /
- تعديل دورة: PUT /:id
- حذف دورة: DELETE /:id
المشروع يظهر احترافية عالية في تنظيم الكود واستخدام التقنيات الحديثة لضمان الأمان وقابلية التوسع، خاصة في معالجة الأخطاء وهيكلية قواعد البيانات.