التحدي
وصلني مشروع عافيتي عن طريق توصية من عميل كنت شغال معه على مشروع ثاني. فريق سابق كان يبني المنصة من شهور، بس التقدم كان بطيء كثير، والمواعيد اللي أعطوها ضلت تتأجل.
الكود اللي استلمته ما كان فيه ولا اختبار آلي. الشركة كانت محتاجة منتج شغّال، مش موعد جديد يروح.
الوعد
بلّشت بمراجعة كاملة للكود، وبعدها وعدت وعد واحد: المنصة بتنزل خلال شهر. هاد يعني نقرر بسرعة شو بنخلّي، وشو بنعيد بناءه، وشو بيستنى لبعد الإطلاق.
شو سلّمنا
تطبيق المرضى بتصميم جديد
تطبيق Flutter لـ iOS و Android: البحث عن دكتور، والمحادثة، والاستشارات الصوتية والفيديو، والوصفات الطبية، والدفع، والإشعارات، بالعربي والإنجليزي والعبري مع دعم كامل لـ RTL.
تطبيق الدكاترة من الصفر
تطبيق Flutter جديد للدكاترة: الاستشارات، والمحادثة، ومكالمات الصوت والفيديو بشاشة اتصال أصلية، والوصفات، والأرباح. من أول commit لحد App Store خلال 11 يوم.
الـ Backend وبوابة الويب
API مبني بـ Node.js و Express على MongoDB، فيه محادثة لحظية عبر Socket.IO، وإشعارات push و VoIP، ودفع بالبطاقات، وتحقق OTP، وبوابة ويب للدكاترة والصيدليات.
لوحتين Super Admin
خلّينا لوحة الـ super admin القديمة شغّالة للعمليات اليومية، وبنفس الوقت بنينا البديل: super admin جديد بـ Next.js داخل Turborepo مع packages مشتركة للواجهة والترجمة.
صفحة الهبوط والمدونة
موقع التسويق على afyti.co، ونظام مدونة لمقالات صحية بيراجعها دكاترة.
البنية التحتية والجودة
جهّزت بنية AWS بحيث الإصدار الجديد ما يصير مخاطرة. بالأسبوع الثاني، وقع الـ production بسبب بناء التطبيق على السيرفر نفسه، فنقلنا كل عمليات البناء للـ CI. من وقتها، كل deploy بينتهي بـ health check و rollback تلقائي إذا صار أي خلل.
- CI/CD بـ GitHub Actions: البناء بيصير بالـ CI والنشر على EC2 عبر AWS SSM، بدون أي دخول SSH للسيرفرات.
- بيئة staging منفصلة عن الـ production، مع health check بعد كل deploy و rollback تلقائي على الـ production.
- CloudFront قدّام الـ API والموقع واللوحات، مع rate limiting عبر AWS WAF.
- تخزين S3 مشفّر ومع versioning للملفات الطبية، مُدار بـ Terraform، مع AWS Backup يومي.
- فحوصات على كل pull request: lint و type checks واختبارات Flutter وتطابق مفاتيح الترجمة.
- أكثر من 1,000 unit test للـ backend، وأكثر من 230 اختبار Flutter.
- بناء تطبيقات الموبايل من الـ CI مباشرة لـ TestFlight و Firebase App Distribution و Google Play internal track.
- بالأسبوع الأول صغّرت سيرفر الـ production درجتين حسب الاستهلاك الفعلي.
الفريق وطريقة الشغل
فريق صغير بتخصصات مختلفة، المهام والـ sprints على ClickUp، وما في إصدار بيطلع قبل ما يعتمده الـ QA.
- Technical Lead (أنا): المعمارية، و AWS، وتطوير الموبايل والـ backend، ومراجعة الكود، والإصدارات.
- مصمم UI/UX: إعادة تصميم تطبيق المرضى وتصميم تطبيق الدكاترة الجديد.
- مطوّر Backend: الـ APIs والتكاملات.
- مهندس QA: اختبار كل إصدار قبل ما يوصل للمتاجر.
الإطلاق
تطبيق الدكاترة نزل على App Store بعد 24 يوم من بداية الشغل، وتطبيق المرضى لحقه ثاني يوم.
Google Play وافق على التطبيقين من أول تقديم، و Apple وافقت من ثاني مرة، على حساب مطوّر مؤسسي جديد جهّزناه لعافيتي. ومن وقت الإطلاق، التطبيقين بينزلهم تحديثات بشكل منتظم.










