دراسة حالة
Event Booking App
تطبيق لإدارة الفعاليات مع نظام حجز وإدارة أدوار المستخدمين.
دراسة حالة بقلم كلثوم ملوكي

نظرة عامة
Event Booking App تطبيق ويب متكامل (Full Stack) طوّرته كلثوم ملوكي (Keltoum Malouki)، مطورة ويب متكاملة مقيمة في الدار البيضاء بالمغرب، لإدارة الفعاليات وحجوزاتها مع إدارة صارمة للأدوار والأمان. يجمع التطبيق بين واجهة برمجية (API) مبنية بـ NestJS، وواجهة مستخدم مبنية بـ Next.js وTypeScript، وقاعدة بيانات PostgreSQL، مع حاويات Docker وخط تكامل مستمر (CI) عبر GitHub Actions.
المشكلة
كثيراً ما تدير المؤسسات التي تنظّم الدورات التدريبية وورش العمل والمؤتمرات التسجيلات يدوياً باستخدام جداول Excel والبريد الإلكتروني. يجمع Event Booking App الفعاليات والحجوزات في مكان واحد، ويستبدل هذه الخطوات اليدوية بمسار عمل آلي وآمن.
دوري
عملت على هذا المشروع بصفتي مطورة ويب متكاملة، من التصميم إلى التسليم:
- نمذجة المجال باستخدام مخططات UML لحالات الاستخدام والأصناف؛
- تنظيم قائمة المهام (Backlog) في ملاحم (Epics) وقصص مستخدمين: المصادقة، وإدارة الفعاليات، ونظام الحجز، والواجهة وتذاكر PDF، مع متابعتها في Jira؛
- تطوير الواجهة البرمجية بـ NestJS وواجهة المستخدم بـ Next.js؛
- كتابة اختبارات الوحدات والاختبارات الشاملة (End-to-End)؛
- تشغيل المشروع في حاويات عبر Docker Compose وإعداد خط GitHub Actions.
الميزات الرئيسية
للمشاركين
- تصفّح الفعاليات المنشورة.
- حجز مقعد في فعالية ما دامت غير مكتملة العدد.
- الاطلاع على الحجوزات وإلغاؤها.
- تنزيل تذكرة PDF تحمل رمز QR بعد تأكيد الحجز.
للمسؤولين
- إنشاء الفعاليات كمسودات، ثم تعديلها أو نشرها أو إلغاؤها.
- تأكيد الحجوزات المعلّقة أو رفضها أو إلغاؤها.
- الاطلاع على الحجوزات حسب الفعالية وحسب المشارك.
- متابعة مؤشرات مثل نسبة الامتلاء وحالات الحجوزات.
التقنيات والبنية
| الطبقة | التقنيات |
|---|---|
| الواجهة الأمامية | Next.js، TypeScript، React Hook Form، Zod |
| الواجهة الخلفية | NestJS، TypeScript، TypeORM، JWT، class-validator |
| قاعدة البيانات | PostgreSQL |
| الاختبارات | Jest، React Testing Library |
| DevOps | Docker، Docker Compose، GitHub Actions |
| إدارة المشروع | Git، GitHub، Jira |
ينقسم المستودع إلى تطبيقين: backend (NestJS) وfrontend (Next.js)، يعملان معاً عبر Docker Compose إلى جانب حاوية PostgreSQL. تُنظَّم الواجهة البرمجية في وحدات وظيفية — المصادقة، والمستخدمون، والفعاليات، والحجوزات — لكل منها متحكّم وخدمة وكائنات DTO وكيانات خاصة بها. تُولَّد تذاكر PDF على الخادم باستخدام PDFKit، وتحمل كل تذكرة رمز QR يشير إلى الحجز المرتبط بها.
المنهجية: الأمان والجودة
الأمان مدمج في الواجهة البرمجية منذ البداية، لا مضاف في النهاية:
- مصادقة عبر JWT وتجزئة كلمات المرور (Hashing) باستخدام bcrypt؛
- تحكّم في الوصول قائم على الأدوار (RBAC) يفصل بين المسؤولين والمشاركين؛
- التحقق من المدخلات في كل طلب عبر كائنات DTO ومكتبة class-validator؛
- سياسة CORS مضبوطة، مع حفظ البيانات الحساسة في متغيرات البيئة.
تُطبَّق قواعد الحجز على الخادم: لا يمكن الحجز إلا في الفعاليات المنشورة، وتتحقق الواجهة البرمجية من سعة الفعالية مقارنةً بالحجوزات المؤكدة، ولا يمكن للمشارك حجز الفعالية نفسها مرتين.
يُطلق كل دفع (Push) وكل طلب دمج (Pull Request) خطاً في GitHub Actions يفحص جودة الشيفرة (Lint) ويشغّل الاختبارات ويبني الواجهة الخلفية والواجهة الأمامية كلاً على حدة. تُنفَّذ الاختبارات الشاملة للواجهة الخلفية على حاوية خدمة PostgreSQL، ثم تُبنى صور Docker بعد نجاح جميع المهام الأخرى. وتتبع رسائل الإيداع (Commits) أسلوب Conventional Commits وتشير إلى تذاكر Jira.
روابط
- الشيفرة المصدرية: github.com/Keltoummalouki/event-booking-app
- دراسات حالة أخرى: جميع المشاريع
- هل تحتاج إلى تطبيق مماثل؟ لنعمل معاً







