نظام إدارة تعليمي (Learning Management System - LMS) - Backend API

تفاصيل العمل

نظام إدارة تعليمي (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

المشروع يظهر احترافية عالية في تنظيم الكود واستخدام التقنيات الحديثة لضمان الأمان وقابلية التوسع، خاصة في معالجة الأخطاء وهيكلية قواعد البيانات.

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
عدد المشاهدات
2
تاريخ الإضافة
تاريخ الإنجاز
المهارات