تفاصيل المشروع
FitZone — منصة SaaS لإدارة الصالات الرياضية
منصة SaaS متعددة المستأجرين (Multi-Tenant) تدير الصالة الرياضية بالكامل: الأعضاء، والاشتراكات، والحضور، ونقطة البيع، والورديات وتقفيل الدرج، وصيانة المعدّات، وتحليلات تساعد على اتخاذ القرار؛ لفرع واحد أو لسلسلة فروع كاملة. بنيتها كـ Back-End بمعمارية API-First باستخدام Laravel، مع قاعدة بيانات مستقلة لكل صالة.
FitZone منصة SaaS لإدارة الصالات الرياضية، مبنية بـ Laravel 13 كـ JSON API بالكامل، وتخدم واجهتين: لوحة تحكم مركزية لمالك المنصة، ولوحة تشغيل لموظفي كل صالة. تحصل كل صالة على قاعدة بيانات MySQL مستقلة، فيكون عزل البيانات على مستوى قاعدة البيانات نفسها لا مجرد عمود مشترك في الجداول.
تضم المنصة 13 وحدة متكاملة. لكل عضو كود يُولَّد تلقائيًا ورمز QR وباركود Code128، وصفحة تعريفية عامة يفتحها بمسح رمز QR الخاص به، مع إخفاء جزء من رقم الهاتف وعدم إظهار أي بيانات مالية. وتغطي الاشتراكات دورة حياتها كاملة: التجميد مع تعويض الأيام تلقائيًا، والتجديد الممتد من تاريخ الانتهاء السابق، والترقية برصيد تناسبي، والتحويل بين الأعضاء، والتذاكر اليومية، مع معاينة المبلغ والتواريخ الجديدة قبل تنفيذ أي تغيير. ويحتفظ كل اشتراك بلقطة من التسعير (Snapshot)، فلا يتأثر السجل السابق بأي تعديل لاحق في الأسعار.
يُسجَّل الحضور بكود العضو أو رقم الكارت أو الباركود أو رمز QR أو رقم الهاتف، مع أسباب رفض واضحة، وحساب انتهاء الاشتراك بتوقيت كل فرع. وتدير وحدة نقطة البيع (POS) مخزونًا مستقلًا لكل فرع، والبيع بالباركود أو SKU، والجرد الدوري، ودفترًا كاملًا لحركات المخزون، وتقارير الأرباح؛ بينما تطابق إدارة الورديات كل طرق الدفع، من نقطة البيع والاشتراكات معًا، في درج واحد.
وفوق التقارير التشغيلية، توفّر المنصة 23 تقريرًا تحليليًا، مثل احتمالية مغادرة الأعضاء، وتوقّع الإيرادات، وأداء الباقات، ومساءلة الدرج، ومقارنة الفروع؛ ولكل تقرير شرح مكتوب لما يقيسه وكيفية قراءته. ويُدار الوصول بأكثر من 40 صلاحية دقيقة، ويغطي الكود 648 اختبارًا من نوع End-to-End تعمل على MySQL وRedis حقيقيين.
كان التحدي الأساسي بناء معمارية حقيقية تخصص قاعدة بيانات لكل مستأجر: تحديد الصالة الصحيحة مع كل طلب، وتجهيز قاعدة بيانات جديدة بالـ Migrations والأدوار والبيانات الافتراضية عند التسجيل، والحفاظ على تزامن الـ Migrations والصلاحيات والـ Cache عبر كل المستأجرين.
ولم تكن قواعد العمل أقل صعوبة؛ إذ كان لا بد أن تبقى الحركات المالية للاشتراكات، من تجديد وترقية تناسبية وتجميد واسترداد وتحويل، دقيقة وقابلة للتدقيق، وأن يطابق الدرج مدفوعات نقطة البيع والاشتراكات معًا، وأن تُحجب البيانات الحساسة مثل سعر الشراء وهامش الربح عن موظفي الاستقبال دون الاعتماد على الواجهة.
بنيت طبقة Multi-Tenancy تعتمد على Header في كل طلب لتبديل اتصال قاعدة البيانات، مع أوامر Artisan لتجهيز الصالات الجديدة وتشغيل Migrations المستأجرين ومزامنة الصلاحيات (RBAC). ووزّعت منطق العمل على Services وPipelines مخصصة، وتُنفَّذ كل عملية مركّبة داخل Database Transaction، بينما تضمن لقطات التسعير وسجل التدقيق (Audit Log) تتبّع كل حركة مالية.
تُحذف الحقول الحساسة على مستوى الـ API Resources حسب صلاحيات المستخدم، ويضمن قيد في قاعدة البيانات وجود وردية مفتوحة واحدة فقط لكل فرع، ويحافظ Redis Tagged Cache على سرعة لوحات التحكم. كما تُنهي مهمة مجدولة الاشتراكات المنتهية يوميًا، مع شبكة أمان تنهيها لحظيًا عند محاولة تسجيل الحضور. وترتبط إشعارات واتساب بأحداث النظام الفعلية، والمنصة كلها تدعم العربية والإنجليزية.
أبرز المزايا
منصة SaaS متعددة المستأجرين بقاعدة بيانات مستقلة لكل صالة
دورة حياة كاملة للاشتراك: تجميد وتجديد وترقية تناسبية وتحويل واسترداد
تسجيل الحضور برمز QR أو الباركود أو رقم الكارت أو كود العضو أو الهاتف
نقطة بيع (POS) بمخزون مستقل لكل فرع وجرد دوري وتقارير أرباح
إدارة الورديات وتقفيل الدرج لكل طرق الدفع
إدارة أصول الصالة والصيانة الوقائية للمعدّات
23 تقريرًا تحليليًا، منها احتمالية المغادرة وتوقّع الإيرادات
أكثر من 40 صلاحية دقيقة مع مصادقة Sanctum بجلسة واحدة لكل حساب
سجل تدقيق ولقطات تسعير لكل حركة مالية
إشعارات واتساب مرتبطة بأحداث النظام
دعم كامل للعربية والإنجليزية
648 اختبار End-to-End على MySQL وRedis حقيقيين