منصة تأجير قوارب ويخوت متكاملة بنظام حجز وإدارة عمليات متقدم
منصة تأجير قوارب ويخوت ثنائية الجانب تربط العملاء بالملاك والكباتن، مع دورة حجز كاملة، ضمان مالي للدفعات، عمولات وتسويات تلقائية للملاك، وتقويم توفر بأسعار لكل فترة.
مشروع حقيقي — نظام مخصّص بالكامل (NestJS + Next.js)
الإجابة المختصرة
حوّلنا تأجير القوارب من تنسيق يدوي عبر الهاتف إلى سوق رقمي منضبط: العميل يحجز ويدفع، المالك يدير قوائمه وتوفره، والنظام يتولّى دورة حجز من 14 حالة مع العمولات والتسويات وحل النزاعات — كل ذلك بصلاحيات حسب الدور وسجل تدقيق كامل.
التحدي
كان التأجير يُدار يدويًا عبر الهاتف وواتساب: لا تحكّم في التوفر، لا ضمان للدفع، صعوبة في حل النزاعات، وغياب أي وسيلة لتتبع عمولات المنصة وتسويات الملاك بدقة.
المنهجية
صممنا سوقًا ثنائي الجانب بستة أدوار (عميل، مالك، كابتن، مشرف، محاسبة، مشرف أعلى) مع آلة حالة صارمة للحجز (دفع ← جاهزية المالك ← بدء الرحلة ← اكتمالها ← تسوية)، توفر وأسعار لكل فترة زمنية، مراسي بإحداثيات جغرافية، ولوحة تحكم إدارية. بُنيت المنصة بمنهجية API-first باستخدام NestJS وPrisma وPostgreSQL مع لوحة Next.js.
خطوات التنفيذ
- 1نمذجة المجال: المستخدمون، الشركات، القوائم، المراسي، والحجوزات
- 2تصميم آلة حالة الحجز ومنطق العمولة والتسوية للملاك
- 3بناء واجهة API بالمصادقة والتحقق وتوثيق Swagger
- 4تطوير لوحة Next.js للموافقات والقوائم والحجوزات والنزاعات
- 5إضافة سجل التدقيق والصلاحيات حسب الدور
- 6اختبار دورة الحجز كاملة قبل التسليم
التقنيات والمنهجيات
- •NestJS 10 (TypeScript)
- •Prisma 5 + PostgreSQL
- •لوحة Next.js 14
- •مصادقة JWT + bcrypt
- •تحقق class-validator
- •توثيق Swagger/OpenAPI
- •بنية Monorepo (pnpm)
مجالات التحسين
- ✓دورة حجز منضبطة من 14 حالة
- ✓دفع بضمان مع عمولات وتسويات تلقائية للملاك
- ✓تقويم توفر وأسعار لكل فترة
- ✓تحكم وصول بستة أدوار
- ✓سجل تدقيق كامل للعمليات
- ✓لوحة إدارة للموافقات والنزاعات
- ✓بنية API-first قابلة للتوسع
الخدمات المستخدمة
أسئلة حول هذا السيناريو
هل النظام مبني خصيصًا أم على منصة جاهزة؟
مبني خصيصًا بالكامل: واجهة API بـ NestJS وقاعدة بيانات PostgreSQL عبر Prisma، ولوحة إدارة بـ Next.js — مما يتيح منطق حجز وتسوية مخصصًا لا توفره المنصات الجاهزة.
كيف يتعامل النظام مع الدفع والنزاعات؟
عبر دورة حجز محددة الحالات تحجز الدفعة حتى تأكيد اكتمال الرحلة، ثم تُحسب العمولة وتُسوّى دفعة المالك. حالات النزاع وعدم الحضور مُعرّفة صراحة في النظام.
هل يمكن توسيعه لمدن ومراسٍ جديدة؟
نعم، البنية API-first ونماذج المدن والمراسي والتصنيفات تجعل التوسع مسألة بيانات وإعداد لا إعادة بناء.