0%
Aymen
العودة إلى الأعمال
موبايلمُنجز2026

Wesh Maklti

تطبيق ثنائي اللغة لتخطيط الوجبات — خطط مخصصة وأهداف سعرات واشتراكات، مع تطبيق جوال ولوحة إدارة.

دَوري
مطور Full Stack
الفترة
فبراير 2024 — أغسطس 2026
الحالة
مُنجز
Wesh Maklti
نظرة عامة

«وِش ماكلتي» (Wesh Maklti) خدمة لتخطيط الوجبات موجّهة لجمهور يتحدث العربية والفرنسية: يحصل كل مشترك على خطط وجبات وأهداف سعرات حرارية تناسب حالته، بينما يتوزّع الوصول على باقتي اشتراك هما Balanced وPremium. يشمل المنتج تطبيق ويب وتطبيقًا للهاتف ولوحة تحكّم إدارية لتشغيل الخدمة.

يقوم كل ذلك على خادم خلفي واحد مبني بـ Express وTypeORM يخدم جميع الواجهات — تطبيق الهاتف المبني بـ React Native (Expo) وواجهة الويب — فيما بُنيت لوحة التحكّم الإدارية على مكوّنات shadcn. تعمل الخدمة في بيئة الإنتاج منذ مطلع 2024، وقد اجتازت خلال ذلك انتقالًا كاملًا إلى خادم جديد على DigitalOcean مع خط نشر CI/CD.

التحدّي

المشكلة المطلوب حلّها

لم تكن الصعوبة الحقيقية في ميزة بعينها بقدر ما كانت في الاستمرارية: الحفاظ على منتج ثنائي اللغة متماسك بالعربية والفرنسية، على الويب والهاتف معًا، مع تشغيله في الإنتاج دون انقطاع منذ مطلع 2024. لم يبدأ أي عمل على البنية التحتية من صفحة بيضاء؛ فالانتقال الكامل إلى خادم جديد وإرساء خط النشر CI/CD جرى كلاهما على خدمة حيّة قيد التشغيل لا في بيئة تجارب.

الحل

كيف بُني

يعرض خادم خلفي واحد مبني بـ Express وTypeORM واجهة API واحدة لجميع العملاء: تطبيق الهاتف المبني بـ React Native عبر Expo، وواجهة الويب، ولوحة تحكّم إدارية قائمة على shadcn لتشغيل الخدمة. أما الوصول بالاشتراك فمقسوم إلى باقتين، Balanced وPremium، تحدّدان ما يتاح لكل حساب.

وعلى مستوى التشغيل، نُقل النشر بالكامل إلى خادم جديد على DigitalOcean ووُضع خلف خط CI/CD، والتطبيق مستمر في الإنتاج منذ مطلع 2024 دون إعادة كتابة.

أبرز الميزات

ماذا يفعل

🥗

خطط وجبات مخصّصة

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

🌐

ثنائي اللغة بالكامل

المنتج ثنائي اللغة من طرف إلى طرف؛ العربية والفرنسية حاضرتان فيه بالدرجة نفسها.

💳

باقتا Balanced وPremium

ينقسم الوصول بالاشتراك إلى باقتين تحدّدان ما يمكن لكل حساب استخدامه.

📊

لوحة تحكّم بـ shadcn

لوحة إدارة مبنية على مكوّنات shadcn للتشغيل اليومي للخدمة.

📱

تطبيق هاتف بـ Expo

تطبيق React Native مبني عبر Expo يتخاطب مع واجهة Express API نفسها التي تخدم الويب.

🚀

نشر عبر CI/CD

يمرّ النشر عبر خط CI/CD إلى خادم على DigitalOcean — بنية اجتازت انتقالًا كاملًا من خادم إلى آخر والخدمة قيد الإنتاج.

التقنيات المستخدمة

بُني باستخدام

الواجهة الأمامية

TypeScript

كيانات TypeORM المبنية على الـ decorators مصمّمة أصلًا لـ TypeScript، ومشاركة لغة واحدة ذات أنواع بين الـ API وعميل React Native تحفظ عقود الطلبات والاستجابات من الانحراف.

الهاتف

React Native

يتيح React Native بناء تطبيق الهاتف من قاعدة كود JavaScript واحدة تتصل بواجهة Express API نفسها، بدل صيانة تطبيقات أصلية منفصلة إلى جانب واجهة الويب.

Expo

يتكفّل Expo بسلسلة البناء والإصدار الخاصة بـ React Native، فيمكن تطوير تطبيق الهاتف دون صيانة مشاريع أصلية يدويًا.

الخلفية

Express.js

يبقي Express الخادم الخلفي طبقة HTTP خفيفة فوق TypeORM — واجهة REST واحدة تستهلكها واجهة الويب وتطبيق الهاتف المبني بـ Expo معًا.

البيانات

PostgreSQL

المستخدمون وخطط الوجبات وباقات الاشتراك بيانات علائقية بطبيعتها، وPostgres يوفّر التكامل المعاملاتي والقيود العلائقية التي يبني عليها TypeORM نموذج كياناته.