طلباتك
توصيل عربي أولًا، مصمَّم لأجهزة POS حقيقية
منصة توصيل طعام وبقالة في فلسطين بأربعة تطبيقات Flutter: العميل والسائق والمطعم والويب، وأكثر من 10 آلاف تثبيت على Google Play.
- الدولة
فلسطين
- النوع
- مشروع عميل
- الفترة
- 2024–2026
- المنصات
- Android · iOS · Web
- تثبيت على Google Play
- 10K+
- تطبيقات Flutter
- 4
- اختبار وحدة
- ~80
- علامات تجارية على منصة واحدة
- 3
نظرة عامة
طلباتك خدمة توصيل طعام وبقالة في فلسطين، تغطي مخيم شعفاط وعناتا ورام الله وكفر عقب والرام ونابلس وما حولها. يطلب العملاء من المطاعم والمقاهي ومحلات البقالة، ويستلم السائقون الطلبات ويوصلونها، وتدير المطاعم قوائمها ولوحات طلباتها من تطبيق مخصّص.
عملت مطوّر Flutter رئيسيًا لكل تطبيقات العملاء: تطبيق العميل، وتطبيق السائق، وتطبيق المطعم مع الطباعة الحرارية للفواتير، وتطبيق الويب. تطبيق العميل متاح على App Store منذ يناير 2024، واستمر تطوير التطبيقات الأربعة حتى 2026، بما في ذلك إعادة تصميم كاملة بالوضعين الفاتح والداكن.
التحدي
- 01
ثلاث فئات وثلاثة تطبيقات: العميل يحتاج تصفحًا سريعًا ودفعًا بسيطًا، والسائق يحتاج تنبيهات واضحة بلمسة واحدة أثناء التنقل، وطاقم المطبخ يحتاج لوحة تُقرأ من آخر المطبخ.
- 02
أجهزة حقيقية: المطاعم تستخدم أجهزة Sunmi وأجهزة POS أندرويد أخرى أو طابعات بلوتوث، ويجب أن تُطبع الفواتير بالعربية دون أي إعداد.
- 03
شبكات غير مستقرة وأندرويد يُنهي التطبيقات بقسوة: يجب أن تصمد الجلسات وخطوات OTP وتنبيهات الطلبات أمام إنهاء العملية.
- 04
تغطية بالمدن: الباك إند يعرّف المدن والمناطق بالاسم لا بالإحداثيات، ومع ذلك على الهاتف أن يحدد منطقة العميل.
- 05
شحن سريع: الإصلاحات العاجلة تصل عبر التحديث الهوائي دون انتظار مراجعة المتجر.
أبرز الميزات
تطبيق العميل
- تصفّح المطاعم حسب الفئة، وبحث يطبّع النص العربي، وأشرطة «جديد» و«توصيل مجاني».
- سلة ودفع عند الاستلام، وعناوين محفوظة، واختيار العنوان من الخريطة.
- سجل الطلبات والتقييمات والمراجعات، وشريط للطلب النشط يتحدّث في الخلفية.
- تسجيل دخول برمز OTP، ودخول عبر Google و Apple و Facebook، وروابط App Links موثّقة تفتح المتاجر والطلبات مباشرة.
- خلاصة فيديوهات قصيرة (Reels)، ومحادثة داخل التطبيق، ووضعان فاتح وداكن.
تطبيق السائق
- شاشة رئيسية «رادار الطلبات» مع حالة الاتصال وعدّادات الأرباح.
- إشعارات طلبات ثابتة بزرّي قبول ورفض، وتنبيهات حرجة ترنّ حتى في الوضع الصامت.
- حجز ورديات أسبوعية وشاشة للتقييمات والمراجعات.
تطبيق المطعم
- لوحة طلبات حيّة مقسّمة حسب المرحلة: جديد، قيد التحضير، جاهز، في الطريق، مكتمل، مرفوض.
- طباعة حرارية تلقائية لكل طلب جديد على طابعات Sunmi وطابعات POS المدمجة وطابعات البلوتوث.
- إدارة القائمة بالصور وفيديو لكل صنف، ومفاتيح التوفّر، والعروض.
- نموذج «طلب سريع» لاستدعاء سائق لطلبات استلمها المطعم بنفسه، مع كشوف الحساب والإشعارات والوضع الداكن.
تطبيق الويب
- تجربة العميل منقولة إلى المتصفح عبر Flutter web، مع اختيار المدينة والسلة وتسجيل الدخول بـ OTP.
- ميزات مبنية بمعمارية نظيفة مع
go_routerوhydrated_bloc. - منشور كنسخة ثابتة خلف nginx.
الميزة الأبرز
طلبات تطبع نفسها
- المطاعم لا تريد الضغط على «طباعة» لكل طلب، لذلك يطبع تطبيق المطعم كل طلب جديد تلقائيًا على أي طابعة متوفرة في الجهاز.
- يكتشف الطابعة بالترتيب: جهاز Sunmi أولًا، ثم طابعة Intelligent POS المدمجة عبر
PrinterClientصغير بلغة Java يرسل بايتات ESC/POS الخام عبرLocalSocketفي أندرويد، وأخيرًا طابعة البلوتوث. - تُنسَّق الفواتير لورق 80 مم باستخدام
esc_pos_utils_plusمع نص عربي بترميز UTF-8، وعلى أجهزة Sunmi تُستخدم واجهة النص الأصلية المحاذاة لليمين. - لا يُطبع طلب مرتين: تُحفظ معرّفات الطلبات المطبوعة بعد إعادة التشغيل (بحد 400)، وتُعلَّم الطلبات الموجودة كمطبوعة بعد التحديث، وتُتجاهل الطلبات الأقدم من 12 ساعة، ولا يُحتسب الطلب مطبوعًا إلا بعد خروج الورق فعلًا، بثلاث محاولات كحد أقصى في الجلسة.
- استجابة سريعة: تحديث كل 15 ثانية أثناء فتح التطبيق، وتحديث فوري عند وصول إشعار بطلب جديد، وجلب أحادي التنفيذ يمنع التحديثات المتداخلة من الطباعة المزدوجة.
الشاشات
اسحب للمزيد
ملاحظات هندسية
- 01
تجديد توكن آمن مع تدوير الـ refresh token
تتشارك كل التطبيقات
SessionManagerواحدًا بتجديد أحادي التنفيذ، فتؤدي أخطاء 401 المتزامنة إلى طلب تجديد واحد فقط. يُحفظ الـ refresh token الجديد قبل الـ access token، ولا يُسجَّل خروج المستخدم إلا عند 401 حقيقي، أما 429 و 503 فتُعامل كأعطال مؤقتة. - 02
تحقق OTP من جهة السيرفر
نقلت التحقق من رمز OTP من الجهاز إلى السيرفر، ووثّقت عقد الباك إند لفريق الـ API. يُحفظ رقم الهاتف المعلّق فقط دون الرمز، فلا يفقد المستخدم مكانه إذا أنهى أندرويد التطبيق في منتصف الخطوات.
- 03
مطابقة المدينة دون إحداثيات
يحوّل التطبيق موقع العميل إلى عنوان ثم يطابقه تقريبيًا مع أسماء المدن والمناطق، مع توحيد الكتابة العربية وربط الأسماء الإنجليزية التي تعيدها خدمات الخرائط بمقابلها العربي. تغطيها 13 حالة اختبار، منها حالات المطابقة الخاطئة.
- 04
تنبيهات لا تفوت السائق
تبقى إشعارات الطلبات ظاهرة مع زرّي القبول والرفض، ووضع حرج اختياري يرنّ رغم الوضع الصامت، ونبضة دورية تُعلم الباك إند بالسائقين المتصلين فعلًا.
- 05
أربعة تطبيقات بخطوة واحدة
أتاحت أنماط تجربة الاستخدام العربية المشتركة ورموز التصميم
TkDesignإطلاق إعادة التصميم الداكنة v2 لتطبيقات العميل والسائق والمطعم في دورة إصدار واحدة.
النتائج
- تطبيق العميل: أكثر من 10 آلاف تثبيت على Google Play، ومتاح على App Store منذ يناير 2024.
- تطبيق السائق: أكثر من 100 تثبيت على Google Play.
- تطبيق المطعم: أكثر من 100 تثبيت على Google Play، ومتاح أيضًا على App Store.
- أربعة تطبيقات Flutter منشورة، مع نحو 80 اختبار وحدة ونتيجة نظيفة لـ
flutter analyzeفي المشاريع الأربعة. - أُعيد نشر المنصة نفسها لاحقًا لعلامتين تجاريتين أخريين: OneWay Fast Food وجاهز.
التقنيات
- Flutter
- Bloc / Cubit
- Dio
- Socket.IO
- FCM
- Crashlytics
- Google Maps
- flutter_map
- ESC/POS
- Sunmi SDK
- go_router
- hydrated_bloc
- Shorebird
- nginx