
نفس المنيو، عشرة فروع، عشرة أسعار مختلفة
بقلم فريق menu-MENA
نُشر في 29 أغسطس 2026
سلسلة كشري بعشر فروع مش هتبيع نص فرخة مشوية بنفس السعر في فود كورت جوه مول وفي شارع جانبي في إمبابة. الإيجار مختلف، نسبة الدليفري مختلفة، واللي حط المنيو عارف ده كويس. المشكلة كانت تقنية: لو كل فرع في الحقيقة سجل مطعم مستقل، فتحديث "نص فرخة مشوية" في عشر قوائم كل ما الوصف أو الصورة تتغيّر يعني تعديلها عشر مرات، أو الاعتماد على سكريبت مزامنة تتمنى إنه شغال صح.
الكتالوج المشترك في menu-MENA مبني علشان يتفادى المقايضة دي. فيه منيو أساسي واحد تحت كل الفروع، وكل فرع بيخزّن بس الحاجات اللي فعلاً مختلفة فيه.
كتالوج واحد، بيتقرأ من ملف مش منسوخ في قاعدة بيانات
المنيو الأساسي هو كتالوج فيه أكتر من 1100 صنف يغطي المطبخ المصري، الشامي، المشويات، الكافيهات، والحلويات، متخزن محلياً جوه الكود (src/data/menu-catalog) بدل ما يتكتب في Firestore لكل مطعم بيستخدمه. الأقسام، الأصناف، ومجموعات الإضافات كلها بتتحمّل من الملف ده وقت الطلب، وأرقام تعريفها (IDs) مختومة بـ catalog-cat-، catalog-item-، وcatalog-mg- علشان النظام يقدر يفرّق دايماً بين صنف من الكتالوج وصنف كتبه المطعم بنفسه.
وبما إن الكتالوج عايش في ملف مش في صف قاعدة بيانات لكل مطعم، ألف مطعم على نفس مجموعة الكتالوج مش هيكلفوا ألف نسخة من "كشري سبيشال" في Firestore. بيكلفوا صفر، لحد ما حد يعدّل صنف.
تعديل سعر بيكتب مستند واحد، مش منيو جديد
لو فرض إن فرع المعادي وفرع الزمالك الاتنين بيبيعوا "نص فرخة مشوية" من نفس الكتالوج وبنفس السعر الأساسي. تفتح Menu Editor على فرع الزمالك، تعدّل سعر الصنف ده، و menu-MENA بيكتب مستند واحد بالظبط على Firestore: override مربوط بنفس الـ ID بتاع صنف الكتالوج، جوه مجموعة items الخاصة بفرع الزمالك. مفيش حاجة بتتكتب لفرع المعادي خالص.
لما صفحة أي فرع من الاتنين تفتح للزباين، منطق الدمج في catalog-overlay.ts بيبدأ بسعر الكتالوج وبيحط فوقه override الفرع ده لو موجود. الزمالك بيقرأ السعر اللي اتزوّد. المعادي بيقرأ سعر الكتالوج، لأنه مفيش عنده override يطبّقه. كل فرع سجل مستقل بمجموعات categories وitems وsettings خاصة بيه، فمفيش مستند مشترك بين الفرعين يتعاركوا عليه.
نفس الآلية دي بتغطي أكتر من السعر. تعليم صنف إنه خلص، إخفاؤه بـ soft delete، أو تغيير وصفه، كلهم بيشتغلوا كـ overrides خاصة بالفرع فوق نفس القاعدة. عصير موسمي ممكن يخلص في فرع المطار ويفضل متاح في فرع وسط البلد، لأن حالة "خلص" بتتكتب في مجموعة الفرع ده بس، مش على الصنف نفسه بشكل عام.
عشرة فروع، لسه حاجة واحدة تفكر فيها
مقال إدارة فروع المطعم من حساب واحد بيشرح إزاي الفروع بتشترك في حساب مالك وفوترة واحدة وهي شغالة كمتاجر منفصلة. اللي الكتالوج المشترك بيضيفه هو نص السعر من القصة دي: فتح فرع جديد مش معناه تكتب 1100 صنف وأسعارهم من الأول. نافذة "إضافة فرع" بتطلب اسم الفرع، الـ slug، وخيار اختياري "نسخ القائمة من"، وبعدها الفرع الجديد بيقرأ من نفس الكتالوج المشترك اللي إخواته بيقروا منه. من هنا، بس الأسعار اللي فعلاً بتغيّرها هي اللي بتتكتب في أي مكان.
زرار دفع التحديث، إيه اللي بيلمسه وإيه اللي لأ
كل كارت فرع في لوحة التحكم فيه زرار "دفع التحديث…" بينسخ الأقسام، الأصناف، التصميم، بيانات المطعم، أو الـ promo bar من فرع لقائمة فروع مستهدفة، مع تحذير واضح قبلها: "هذا سيستبدل الأقسام المحددة في الفروع المستهدفة. ستُستبدل العناصر الحالية في تلك الأقسام."
يستاهل تعرف بالظبط "الأصناف" دي يعني إيه هنا. زرار الدفع بيتخطى أي حاجة معاها ID فيه بادئة catalog، سواء في الفرع المصدر اللي بيقرأ منه أو الفرع الهدف اللي بيمسح منه قبل الكتابة. يعني دفع تحديث لكل الفروع مش هيلمس أبداً سعر عيّنته على صنف كتالوج في أي فرع. هو بس بينقل الأصناف اللي المطعم كتبها بنفسه من الأول. لو المورّد زوّد سعر الفراخ ومحتاج تزوّد السعر في عشر فروع مرة واحدة، زرار الدفع مش هيعمل الجزء ده لك: لسه لازم تعدّل السعر فرع فرع، مرة لكل واحد، وده عشر تعديلات صغيرة أحسن من عشر عمليات إعادة بناء منيو كاملة. مقال فتح فرع تاني بيشرح الجزء الخاص بنسخ المنيو من نفس المقايضة دي.
عشرة فروع فعلياً بتكلف كام
الكتالوج المشترك بيخلّي جانب البيانات رخيص، وسعر إضافة الفرع هو النص التاني من الحكاية. الفرع الأول بـ 90 جنيه شهرياً أو 1000 جنيه سنوياً. كل فرع بعده بنص السعر: 45 جنيه شهرياً أو 500 جنيه سنوياً، على أي دورة فوترة الحساب ماشي عليها. عشرة فروع يعني سعر أساسي واحد زائد تسع إضافات، مش عشر اشتراكات منفصلة تتابعها لوحدها.
عشرة قوائم أسعار من منيو واحد هي نتيجة طبيعية لما الصنف اللي بتسعّره والصنف الأساسي في الكتالوج يبقوا حاجتين متخزنتين لوحدهم من الأول. تعدّل سعر فرع واحد، وتكون كتبت مستند واحد بس. التسع فروع التانية لسه بتقرأ نفس الكشري بنفس السعر اللي كان عليه دايماً.