منصة حجز جولات سياحية تم بناؤها باستخدام Node.js للـ backend وMongoDB كقاعدة بيانات، مع واجهة أمامية بـ Angular .
المشروع يعكس تطبيقًا متكاملًا (Full-Stack) يركز على تقديم تجربة مستخدم سلسة ومميزات قوية.
إليك أهم مميزات المشروع:
واجهة مستخدم متجاوبة وحديثة (Angular Frontend):
تصميم متجاوب يعمل على الموبايل والديسكتوب باستخدام Angular، لضمان تجربة مستخدم موحدة وجذابة.
تنظيم الواجهة في وحدات (modules) منفصلة (Auth، Tours، Reviews، Users) لتحسين الأداء والصيانة .
عرض الجولات السياحية بصورة مرئية مع تفاصيل شاملة (اسم، سعر، تقييمات، مواقع جغرافية) .
API قوي وآمن (Node.js/Express Backend):
RESTful API يدعم عمليات CRUD (إنشاء، قراءة، تحديث، حذف) للجولات، الحجوزات، التقييمات، والمستخدمين.
تأمين الـ API باستخدام JWT للتحقق من هوية المستخدمين (authentication) والتحكم في الصلاحيات (authorization) بناءً على أدوار المستخدم (user، admin، lead-guide).
استجابات موحدة بصيغة JSON { status: 'success', data: {...} } لضمان تجربة تطوير سلسة وسهلة التكامل مع الـ frontend.
إدارة قاعدة بيانات متقدمة (MongoDB/Mongoose):
نماذج بيانات منظمة (Tour، Booking، Review، User) مع علاقات مرجعية (references) بينها لربط الجولات، الحجوزات، والتقييمات بالمستخدمين.
دعم GeoJSON لتخزين وعرض المواقع الجغرافية (مثل موقع بداية الجولة والمواقع الفرعية)، مع استفسارات جغرافية لإيجاد الجولات ضمن نطاق معين.
حساب تلقائي لمتوسط التقييمات وعدد التقييمات لكل جولة بعد إضافة أو تعديل التقييمات.
مميزات المستخدم:
تصفح عام: عرض الجولات السياحية مع فلاتر (مثل أفضل 5 جولات رخيصة) وتفاصيل شاملة (مدة، صعوبة، سعر، تواريخ البداية).
تسجيل الدخول/التسجيل: نظام تسجيل دخول وتسجيل آمن باستخدام JWT، مع تحديث الملف الشخصي (اسم، إيميل، صورة) وكلمة السر.
الحجوزات: إمكانية حجز جولات باستخدام جلسات دفع آمنة (GET /checkout-session/:tourId) وعرض الحجوزات الخاصة بالمستخدم (GET /myBookings).
التقييمات: كتابة وتعديل تقييمات الجولات (للمستخدمين فقط) مع عرض التقييمات مع اسم المستخدم وصورته.
مميزات الإدارة (Admin/Lead-Guide):
إنشاء، تعديل، وحذف الجولات مع دعم رفع الصور وتحجيمها تلقائيًا.
إدارة المستخدمين (عرض، إنشاء، تعديل، حذف) للـ admin فقط.
إدارة الحجوزات (عرض، تعديل، حذف) للتحكم الكامل في العمليات.
عرض إحصائيات الجولات (GET /tour-stats) وخطة شهرية (GET /monthly-plan/:year) لتحليل الأداء.
معالجة الصور:
دعم رفع الصور للجولات (غلاف وصور إضافية) والمستخدمين (صورة الملف الشخصي) مع تحجيم تلقائي باستخدام مكتبات مثل Sharp (في الـ backend).
عرض الصور بجودة عالية في الواجهة الأمامية مع تحسين الأداء.
ميزات جغرافية:
عرض مواقع الجولات على خريطة تفاعلية في الواجهة الأمامية.
استفسارات جغرافية متقدمة (مثل إيجاد الجولات ضمن مسافة معينة أو حساب المسافات بين النقاط) باستخدام GeoJSON وفهرسة 2dsphere في MongoDB.