مشروع 01

وصلة

انشر طلب التوصيل، وأقرب سائق يستلمه.

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

FlutterDartRiverpodFirebaseCloud FunctionsGoogle MapsNext.js
9:41
الرئيسية للتاجر مع زر إنشاء توصيلة وإحصاءات اليوم
الغاية

لماذا صُنع هذا المنتج.

إرسال غرض داخل المدينة لا يجب أن يعني الاتصال بشركة توصيل، وانتظار من يرتّب التوصيلة، والتفاوض على السعر. وصلة تحوّل التوصيل إلى منشور: تحدد الاستلام والتسليم، وترى سعراً ثابتاً قبل التأكيد، ويستلم الطلب أقرب سائق بالمركبة المناسبة. تناسب المتاجر التي توصل يومياً، وأي شخص يحتاج توصيلاً عاجلاً.

من داخل المشروع

مدروس من البداية حتى النهاية.

6 نقاط بارزة

أربعة منتجات مترابطة: تطبيقات التاجر والسائق والمندوب من كود Flutter واحد، ولوحة تحكم بـ Next.js لفريق التشغيل.

توزيع على القريبين: الطلبات المفتوحة تُفلتر حسب المسافة من موقع السائق الحالي ونوع مركبته — دراجة أو دراجة نارية أو سيارة أو فان.

الصق رابط الموقع: رابط خرائط Google يتحوّل إلى إحداثيات ومسار على الطريق وعنوان عربي مقروء خلال ثوانٍ.

ثقة من التصميم: مراجعة وثائق السائق قبل العمل، وموافقة التاجر على كل سائق، وتقييمات، وحظر بعد تقييم نجمة واحدة.

دخل جاهز: عمولة لكل تاجر، وأكواد إحالة للمندوبين، ودفعات مع إيصالات — كلها تُحسب تلقائياً.

واجهة عربية أولاً: من اليمين لليسار بخط Cairo، مع تبديل للإنجليزية داخل التطبيق.

التحديات

القيود التي بنيت الحل حولها.

ما يبدو بسيطاً في الواجهة كان أصعب ما في التنفيذ.

  1. 01

    أسعار لا يمكن التلاعب بها

    المشكلة

    حساب الرسوم على الهاتف قابل للتعديل، والتفاوض على كل توصيلة يُفقد الثقة بين التاجر والسائق.

    كيف بنيت الحل

    لا يُنشأ الطلب إلا عبر Cloud Functions تقرأ إعدادات التسعير الحالية، وتحسب السعر من المسافة الفعلية على الطريق مع رسوم ثابتة حسب التوقيت، ثم تكتب الطلب. وقواعد Firestore تمنع العميل من كتابة الطلبات مباشرة.

  2. 02

    إثبات أن التوصيل تم فعلاً

    المشكلة

    زر «تم التسليم» البسيط يفتح الباب لتوصيلات وهمية وخلافات حول من استلم ماذا.

    كيف بنيت الحل

    لكل طلب رمز QR لمرة واحدة يعرضه المستلم، ومسح السائق له يُغلق الطلب على الخادم، فلا تُحتسب الأرباح والعمولات إلا بعد تسليم حقيقي.

  3. 03

    طلبات جماعية تبقى متّسقة

    المشكلة

    استلام واحد مع عدة نقاط تسليم يعني قبولاً جزئياً وإلغاء لنقطة واحدة وأسعاراً لم تعد صحيحة.

    كيف بنيت الحل

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

المشروع التالي

EcoMasr

أثر بيئي، واضح على الخريطة.

عرض المشروع التالي
الصفحة الرئيسية لـ EcoMasr مع معاينة خريطة الأثر