التقنيات المستخدمة
TypeScript وReact وReact Native وPostgreSQL وCloudflare Workers وPrisma
مدة العمل
ذو الحجة ۱٤٤٦ – حتى الآن
نوع المشروع
تجاري
المعاينة
عرض التطبيقرحلة هي منصة متكاملة لحجز وإدارة الرحلات السياحية، صُممت خصيصاً لوكالات السفر وعملائها. تتيح المنصة للوكالات استخدام لوحة تحكم عبر الويب لإدارة الرحلات والحجوزات والعملاء والموظفين والشؤون المالية، بينما يستخدم العملاء تطبيق جوال مخصص لاكتشاف الرحلات والمقارنة بينها وحجزها. تم بناء المنصة كـ Monorepo حديث باستعمال TypeScript مع التركيز الشديد على أمان الأنواع (Type safety)، الأمان، سهولة الاستخدام، والفصل الواضح بين المسؤوليات عبر أجزاء النظام المختلفة.
تواجه وكالات السفر غالباً تحدي التنسيق بين عدة مسارات عمل مترابطة، مثل جدولة الرحلات، إدارة الحجوزات، بيانات العملاء، صلاحيات الموظفين، التسعير، المدفوعات، الإلغاءات، والتقارير المالية. وتؤدي إدارة هذه العمليات عبر أدوات منفصلة إلى تعقيد التشغيل اليومي وزيادة احتماية وقوع الأخطاء.
جاءت رحلة لتجميع مسارات العمل هذه في منصة موحدة؛ حيث توفر للوكالات لوحة تحكم مركزية للإدارة، وتمنح العملاء في الوقت نفسه تجربة سلسة عبر التطبيق لتصفح الرحلات، إجراء الحجوزات، وإتمام المدفوعات.
تمثل الهدف الرئيسي في إنشاء منصة متكاملة لإدارة الرحلات تلبي الاحتياجات التشغيلية لوكالات السفر، وتضمن في الوقت ذاته تجربة حجز ممتازة للعملاء.
تم تطوير المشروع كـ Monorepo متعدد الأجزاء باستخدام TypeScript، مع تقسيم النظام إلى تطبيقات وحزم نطاقات (Domain packages) منفصلة. أتاح هذا الهيكل تنظيم لوحة تحكم الوكالة، تطبيق الجوال للعملاء، واجهات برمجة التطبيقات (APIs)، منطق الأعمال، وطبقة قاعدة البيانات بشكل مستقل مع مشاركة القواعد والأنواع البرمجية والأدوات المساعدة.
يعتمد المعمار البرمجي على التفكير القائم على النطاق (Domain-Driven Design) مع حدود واضحة بين نطاقات الإدارة والعملاء والنواة الأساسية للنظام. تستخدم طبقة الـ API عقد oRPC وHono على بيئة Cloudflare Workers، مما يسمح للواجهتين الأمامية والخلفية بمشاركة التوصيفات وقواعد التحقق عبر كامل التطبيق.
تم تطوير جانب الوكالة كتطبيق ويب باستعمال React يتضمن ميزات إدارة الرحلات، الحجوزات، العملاء، الموظفين، التحليلات، والتقارير المالية. بالتوازي مع ذلك، تم تطوير تطبيق React Native مخصص للعملاء باستعمال Expo يوفر ميزات اكتشاف الرحلات، تصفيتها، الحجز، تسجيل الدخول، والتدفق المالي.
تم دمج معالجة المدفوعات مع Paymob لدعم الحجوزات، عمليات الاسترداد، والسحب الآلي. كما تمت حماية بيانات الهوية الوطنية الحساسة باستخدام التشفير الشامل المعتمد على كلمة مرور يتم التحكم فيها من قبل مدير النظام.
ولأن المنصة مخصصة للاستخدام التشغيلي الفعلي، تم التعامل مع التوثيق والمستندات كجزء أساسي من المنتج؛ حيث تم إنشاء دليل مستخدم تفصيلي مكون من ۷۰ صفحة باللغتين العربية والإنجليزية، يشرح كل ميزة وزر في النظام لتسهيل استخدامه على الأفراد ذوي الخبرة التقنية المحدودة.
تم تنظيم مشروع رحلة كـ Monorepo مع فصل واضح بين التطبيقات، واجهات الـ API، منطق النطاق، وطبقة حفظ البيانات. تحتوي القاعدة البرمجية على تسع حزم عمل، تغطي لوحة تحكم الويب للوكالة، تطبيق الجوال للعملاء، طبقات الـ API، طبقات النطاق، والوصول لقواعد البيانات.
تعتمد المعمارية على منهجية العقود الأولية للـ APIs (Contract-first APIs)، التنظيم القائم على الميزات، أمان الأنواع الشامل من البداية للنهاية، واستخدام العناصر الأساسية المشتركة. توفر بيئة Cloudflare Workers مشغل الواجهة الخلفية، بينما يُستخدم PostgreSQL مع Prisma لتخزين البيانات العلاقاتية، وCloudflare R2 لتخزين الملفات، وExpo EAS لنشر وتحديث تطبيق الجوال.
تطور مشروع رحلة ليصبح منصة إدارة سفر متكاملة تغطي المسار التشغيلي للوكالة وتجربة الحجز للعميل على حد سواء. يدعم النظام الحالي إدارة الرحلات، الحجوزات، المدفوعات، إدارة العملاء، التحكم في صلاحيات الموظفين، التحليلات، التقارير المالية، والتعامل الآمن مع البيانات الحساسة.
بالإضافة إلى البرمجية نفسها، يشتمل المشروع على دليل مستخدم ثنائي اللغة وعرض تقديمي احترافي مكون من ۲۰ شريحة يتضمن نماذج أولية ولقطات شاشة للمنصة، وقد تم إعداد هذه المواد لتسهيل عرض النظام، فهمه، واعتماده في العمل.
أتاح بناء مشروع رحلة اكتساب خبرة عميقة في تصميم وإدارة Monorepo واسع النطاق باستخدام TypeScript عبر الويب، الجوال، الواجهة الخلفية، طبقة النطاق، وقواعد البيانات. تطلب المشروع ما هو أكثر من مجرد تطبيق ميزات منفردة، حيث أُولِيَ اهتمام خاص للمعمارية البرمجية، عقود الـ APIs، الأمان، المدفوعات، التوثيق، والتفاعل بين عدة تطبيقات في وقت واحد.
كما أكد المشروع على أهمية تصميم البرمجيات حول احتياجات مستخدميها؛ فقد صُمم الدليل ثنائي اللغة، وتجربة العميل الميسرة، والفصل بين تطبيقات الوكالة والعميل كلها لجعل النظام أسهل في الفهم والتشغيل على أرض الواقع.