كل المشاريع
قصة مشروع: Oyoun Academy

أسبوعين لحد demo شغّال. وبعدها منصة SaaS بـ Laravel لعدة شركات.

Oyoun Academy منصة تدريب وتطوير مواهب للشركات. استلمت الفريق كـ Team Lead والمشروع متأخر، وكان عنا أسبوعين بس نعرض منصة شغّالة قدام مدراء الـ HR بمجموعة شركات كاملة. نجحنا، والمنصة صارت تخدم شركات بكل الشرق الأوسط.

الدور
Team Lead
الفريق
9 أشخاص
المعمارية
قاعدة بيانات لكل tenant
التقنيات
Laravel و React و AWS
Oyoun Academy
أسبوعين
لحد demo شغّال قدام مدراء الـ HR بمجموعة APIC
+10
أكاديميات لشركات ومجموعات بأول سنة
+10,000
متدرب بأول سنة
قاعدة لكل tenant
عشان بيانات كل شركة تضل معزولة

التحدي

لما استلمت الفريق كـ Team Lead، كان المشروع متأخر أصلا. الإدارة بدها منصة شغّالة خلال أسبوعين، عشان تنعرض قدام مدراء الـ HR بكل شركات APIC، المجموعة اللي بتملك Oyoun Media.

هاد كان قبل أدوات الـ AI للبرمجة. أسبوعين يعني فريق من تسعة أشخاص، وخطة واضحة، وأيام طويلة.

الأسبوعين

الفريق اشتغل أكثر من 14 ساعة باليوم عشان نلحق الموعد. العرض قدام مدراء الـ HR نجح، وطلّع المشروع من عنق الزجاجة.

بعدها الأمور صارت أسهل. المنصة بلّشت تكسب عملاء من برا المجموعة، وصارت شركات بالشرق الأوسط، منها بالأردن وتركيا، تدرّب فرقها عليها.

القرار الصعب: قاعدة بيانات وحدة ولا وحدة لكل tenant

كل عميل عبارة عن شركة إلها موظفينها ودوراتها وتقاريرها. كان لازم نختار بين قاعدة بيانات وحدة مشتركة، كل query فيها لازم يتقيّد بالـ tenant، وبين قاعدة بيانات منفصلة لكل tenant.

القاعدة الوحدة أسهل بالتشغيل، بس أي قيد بينسى ممكن يكشف بيانات شركة لشركة ثانية. قاعدة لكل tenant بتفصل بيانات كل شركة بالكامل وبتسهّل الـ backup والاسترجاع لكل عميل لحاله، مقابل إنك تشغّل الـ migrations والصيانة على قواعد بيانات كثيرة.

اخترنا قاعدة بيانات لكل tenant، مبنية على Tenancy for Laravel والـ SaaS boilerplate تبعها. كل أكاديمية إلها subdomain خاص؛ الدومين بيحدد الـ tenant، وبيبدّل اتصال قاعدة البيانات، وبيفصل الـ cache والملفات والـ queues. وفي تسجيل دخول مركزي بيلاقي أكاديمية المستخدم من الإيميل.

شو بنينا

أكاديميات بهوية كل شركة

كل شركة إلها أكاديمية على subdomain خاص، فيها شعارها وإعلاناتها، وبوابة بالعربي والإنجليزي مع دعم كامل لـ RTL.

مسارات تعلّم و Coursera

مسارات تعلّم حسب المهارة، وكتالوج دورات مربوط مع Coursera، بحيث المتدرب اللي طلبه بينقبل بيسجّل بدورات Coursera على حساب أكاديميته.

موافقات على التسجيل

طلبات التسجيل بتستخدم keys وبتمر على موافقة الـ Team Lead والـ HR، مع إشعارات بالقبول أو الرفض.

متابعة وتقارير

لوحات للمتدربين فيها مؤشرات أداء ومخاطر، وتقارير للـ HR عن التسجيلات والدورات والمتدربين.

صلاحيات واشتراكات

أدوار مخصصة، وواجهة HR وواجهة متدرب بيقدر نفس المستخدم يبدّل بينهم، وخطط اشتراك مع billing.

طريقة الشغل

بعد ما خلصنا من الـ demo، ركّزت إني أخلّي الفريق أسرع والكود أسهل يكبر.

  • قناة تواصل أوضح للفريق، عشان القرارات والمشاكل ما تضيع.
  • CI/CD بـ GitHub Actions بدل الإصدارات اليدوية.
  • معمارية أنظف للمشروع ماشية على Laravel best practices.
  • واجهة React بتدعم العربي والإنجليزي من أول يوم.

الفريق

فريق من تسعة أشخاص قدته بالتخطيط ومراجعة الكود والتسليم:

  • Team Lead (أنا): المعمارية، والتخطيط، ومراجعة الكود، والتسليم.
  • أربع مطوّرين Laravel.
  • مطوّرين React اثنين.
  • مصمم UI/UX.
  • مهندسين QA اثنين.

النتائج

بأول سنة، Oyoun Academy ضمّت أكثر من 10 أكاديميات لشركات ومجموعات، وأكثر من 10,000 متدرب. والمنصة لسا شغّالة على oyoun.academy.

من داخل المنصة

صفحة دخول بهوية APIC
صفحة دخول بهوية APIC
واجهة الـ HR: إدارة مسارات التعلّم
واجهة الـ HR: إدارة مسارات التعلّم
تفاصيل دورة بمحتوى بعدة لغات
تفاصيل دورة بمحتوى بعدة لغات
تسجيل بيستنى موافقة الـ Team Lead والـ HR
تسجيل بيستنى موافقة الـ Team Lead والـ HR
دورة على Coursera برعاية Oyoun Academy
دورة على Coursera برعاية Oyoun Academy

شوفها على أرض الواقع

محتاج منصة Laravel لعدة عملاء؟

بنيت وقدت منصات SaaS لازم فيها بيانات كل عميل تضل منفصلة. احكيلي عن مشروعك.

تواصل معي