تطوير SaaS في المغرب
عمل SaaS هو العزل والفوترة والتأهيل والصلاحيات — عزل البيانات والمهام واشتراكات وسطح إدارة يعيش فيه المشغّلون.
BROC ServiceOS وMatarTaxi مثالان على هذا الشكل من المنتجات: متعدد المستأجرين وتشغيلي ومصمم للعمل يومياً.
العزل هو الجزء السهل إخطاؤه مبكراً والمكلف إصلاحه لاحقاً: معرّف مستأجر على كل جدول، واستعلامات مُقيَّدة افتراضياً لا بالانضباط فقط، ومهام مُصفَّفة — تصديرات ودفعات إشعارات — موسومة حتى لا يؤخر تراكم مستأجر تراكم آخر. يعزل BROC ServiceOS بيانات العميل والمهام والملفات بهذه الطريقة، فيخدم النشر نفسه عدة شركات خدمات دون أن ترى إحداها عملاء أو فواتير الأخرى.
تُربط الفوترة بـ Stripe منذ اليوم الأول: تطابق خطط الاشتراك حدوداً حقيقية للمنتج لا سعراً فقط، وتُبقي أحداث الـwebhook وصول المستأجر محدَّثاً حين يرفع خطته أو يخفضها أو تنتهي. صُمم التأهيل لإيصال مستأجر جديد بسرعة إلى مساحة عمل قابلة للاستخدام — إنشاء فريقه الأول أو مهمته الأولى — بدل تركه أمام لوحة فارغة بلا توجيه.
يطبّق MatarTaxi الشكل نفسه على عمليات فورية لا إدارة مكتبية: حالة تُقاد بـ WebSocket بدل تحديث دوري، لأن موزّع المهام أو مشغّل الأسطول يحتاج رؤية التغيير لحظة حدوثه لا بعد ثلاثين ثانية.
مشاكل الأعمال
- تطبيق لمستأجر واحد مع جدول مستأجرين مُلصق لاحقاً، فيعتمد العزل على اتفاق لا على مخطط قاعدة البيانات نفسه.
- فوترة لا تطابق حدوداً يفرضها المنتج فعلاً، فقد يُحاسَب عميل على مستوى لا يقيّده المنتج فعلياً.
- تأهيل يترك عميلاً جديداً في لوحة فارغة بلا بيانات ولا توجيه، فتقرر أول عشر دقائق إن كان سيعود.
- صفحة تسعير تعد بحدود لا يملك المنتج مساراً برمجياً لفرضها فعلاً، فتعد المبيعات بوعد يضطر المهندسون لاستدراكه لاحقاً.
- تصدير بيانات المستأجر يُعامل كخدمة يدوية لمرة واحدة لا ميزة حقيقية، فيضطر مستأجر يريد المغادرة — أو مجرد نسخة احتياطية — للطلب والانتظار.
- لا أثر تدقيق لمن غيّر خطة مستأجر أو وصوله، فلا يجد خلاف فوترة سجلاً يُرجع إليه.
منهج التطوير
- العزل أولاً: بيانات وطوابير وملفات. ثم التأهيل والخطط والإدارة — بهذا الترتيب، لأن إضافة العزل بعد الإطلاق تعني لمس كل جدول.
- Laravel وReact من طنجة، يُشغَّلان بـ Docker ونسخ احتياطي، حتى تنجو المنصة من نشر سيئ أو خادم معطل دون فقدان بيانات مستأجر.
- ربط أحداث اشتراك Stripe بأعلام ميزات حقيقية لا باسم خطة فقط، حتى يزيل خفض الخطة الوصول فعلاً لا مجرد تغيير تسمية.
- نمذجة الخطط والحدود كبيانات لا كجمل شرطية متناثرة في الكود، حتى تكون فئة تسعير جديدة سطراً في قاعدة البيانات لا نشراً.
- تسجيل كل تغيير خطة أو صلاحية مع من فعله ومتى، حتى يستطيع الدعم الإجابة عن «لماذا يملك هذا المستأجر وصولاً إلى X» دون تخمين.
- بناء تصدير بيانات على مستوى المستأجر كميزة حقيقية منذ البداية لا خدمة يدوية، حتى يستطيع مستأجر إخراج بياناته دون فتح تذكرة دعم.
- تحديد معدل وموارد المستأجرين التجريبيين بمعزل عن المدفوعين، حتى لا يستطيع حساب مجاني إضعاف الخدمة لعملاء يدفعون فعلاً.
- تتبع استخدام الميزات لكل مستأجر منذ البداية، حتى تُبنى فئات التسعير وخارطة الطريق على ما يفعله المستأجرون فعلاً لا على افتراضات.
ما تحصل عليه
- منصة لا يُسقطها العميل الثاني، لأن العزل صُمم منذ الجدول الأول لا أُضيف بعد حادثة.
- تأهيل سريع بما يكفي ليعمل مستأجر جديد داخل مهمته الأولى أو فريقه الأول خلال دقائق من التسجيل.
- نموذج تسعير يفرضه المنتج فعلاً، فما تعد به المبيعات وما تقدّمه المنصة شيء واحد.
- يستطيع الدعم الإجابة عن أسئلة الوصول والفوترة من سجل التدقيق بدل طلب فحص قاعدة البيانات من مهندس.
- مستأجرون يستطيعون تصدير بياناتهم عند الطلب، وهو ما يجعل أيضاً طلبات GDPR المشابهة أمراً عادياً لا هرولة مستعجلة.
- إشارة تسرب عملاء تُكتشف مبكراً، لأن بيانات الاستخدام تُظهر مستأجراً يصمت قبل أسابيع من الإلغاء الفعلي، لا بعده.
مشاريع مختارة
أسئلة شائعة
Can you integrate Stripe?
Yes. Subscriptions, webhooks, dunning-safe billing events and tenant plans mapped to real product limits.