تصفية السعة اللحظية
تُحسب الإتاحة مقابل الحجوزات المؤكّدة لحظة الاستعلام، لا من ذاكرة آخر كتابة، فتخرج الرحلة المكتملة من نتائج البحث بدل أن تقبل مقعدًا لم يعد لديها.
استجمام
سوق سياحة بحرية ثنائي الجانب، مبني كمنصّة ويب واحدة متجاوبة: يعرض الرُّبّان في السعودية رحلاتهم البحرية، ويحجزها المسافرون، وتُزيل السعة اللحظية الرحلة المكتملة من العرض قبل أن يُباع المقعد نفسه مرّتين.
حجوزات مزدوجة
تُفحص السعة مقابل الحجوزات المؤكّدة لحظة الاستعلام، لا بعد وقوع الحجز.
مدفوعات عبر «ميسر»
تُسوّى كل عملية حجز عبر البوّابة السعودية المرخّصة، لا عبر مسار دفع بنيناه بأنفسنا.
ثلاثة تطبيقات، منصّة واحدة
تطبيق العميل ولوحة الرُّبّان ووحدة تحكّم المشغّل — تطبيقات ويب متجاوبة قابلة للتثبيت كـ PWA لا نسخًا أصلية من المتاجر — على مصدر حقيقة واحد.
بنية التزامن
تصيير بلا حالة على بنية مرنة فوق اتصالات مجمّعة بقاعدة البيانات، وإتاحة تُحسب لكل طلب، فتُستوعب موجة الحجوزات بدل أن تُصطفّ.
التحدي
للرحلة البحرية سعة قصوى وموعد إقلاع ثابت. وبيع مقعد مرّتين ليس خطأ فوترة يُسوّى الشهر المقبل — بل عائلة تُردّ عند المرسى، ومنصّة يلومها طرفا حجزٍ توسّطت فيه.
المنهجية
منصّة واحدة خلف ثلاثة مداخل: تطبيق للعميل للاكتشاف والحجز، ولوحة للرُّبّان لإدارة العمل خلفه، ووحدة تحكّم داخلية للمشغّل. وثلاثتها تطبيقات ويب متجاوبة على Next.js قابلة للتثبيت كتطبيقات PWA لا نسخًا أصلية من المتاجر، فيصل الإصلاح الواحد إلى كل جهاز دفعة واحدة. تأتي الجلسات من Supabase Auth بتسجيل دخول برمز لمرة واحدة، وتُحرّر مهامٌ مجدولة على Vercel الحجوزات غير المدفوعة وتنقل الرحلات بين حالاتها دون أن يضغط أحد زرًا، ويُبقي مخزنُ حالةٍ مشترك واحد الاكتشافَ واختيارَ المقاعد والدفعَ يقرأون الأرقام نفسها.
تُحسب الإتاحة مقابل الحجوزات المؤكّدة لحظة الاستعلام، لا من ذاكرة آخر كتابة، فتخرج الرحلة المكتملة من نتائج البحث بدل أن تقبل مقعدًا لم يعد لديها.
يجري الاكتشاف واختيار المقاعد والدفع في مسار واحد فوق مخزن حالة مشترك واحد، فلا تُعاد تهيئة الشاشة تحت المسافر في منتصف الحجز، ولا يختلف عدد المقاعد مع نفسه بين لوحتين.
لوحة تُجيب عن الأسئلة التي يطرحها المشغّل فعلًا: ما المحجوز اليوم، وما الذي تحقّق من دخل، وما الذي لم يُسوَّ بعد.
من داخل النظام
شاشات من المنتج وهو يعمل، لا إعادة تصميم له.

النتيجة
تدير المنصّة الآن شطري الصفقة معًا. يحجز المسافرون رحلات متاحة فعلًا، ويرى الرُّبّان ما باعوه وما يستحقّونه دون سؤال أحد. ولأن السعة تُحسم عند المصدر بدل تسويتها لاحقًا، لا ينشأ الحجز المزدوج الذي تعتاد أسواق كهذه الاعتذار عنه. والبنية مُقاسة على الموجات التي يعرفها هذا السوق فعلًا — عطلة موسمية، أو رحلة مروَّج لها — بتصيير يتوسّع مع كل طلب، وإتاحة تُحسم من قاعدة البيانات لا من ذاكرة مؤقتة قد تتقادم تحت الضغط.
هذه هي المشكلة التي نحلّها غالبًا. أخبرنا أين تتوقف الأرقام عن الاتساق.
ابدأ محادثةتُدار الحسابات عبر Supabase Auth بتسجيل دخول برمز لمرة واحدة، ويسبق التحقّق من هوية الرُّبّان عروضه بدل أن يلحق بها، وتُسوّى كل عملية حجز عبر «ميسر»، البوّابة السعودية المرخّصة، لا عبر مسار دفع مبني داخليًا.
لوحة تحكّم عليا خاصة يعتمد فيها ملّاك المنصّة طلبات التحقّق من الهوية، ويضبطون نسب العمولة ويعدّلونها، ويطابقون ما جرى تحصيله مع ما يستحقّه كل رُبّان — وهو العمل الذي يقع على السوق نفسه، بعيدًا عن التطبيقين العامّين.
تُنهي مهامٌ مجدولة على Vercel الحجوزات غير المدفوعة، فيعود المقعد الذي توقّف صاحبه عن دفعه إلى الإتاحة بدل أن يبقى محجوزًا، وتنقل الرحلات بين حالاتها مع مرور موعد إقلاعها. وهذه هي الأعمال التي تحدّد ما إذا كانت الإتاحة لا تزال صحيحة بعد ساعة.
بُني باستخدام