نظرة عامة

ينقل Mashoor بازارات باكستان المحلية إلى الإنترنت — حلوى السوهان من مُلتان، وأحذية الخُسّا من لاهور، وصندل التشابال من بيشاور، وبرياني كراتشي، ومشمش هنزا — ويوصّلها من البائع مباشرةً إلى كل أنحاء البلاد وإلى الخارج. إنه علامة واحدة تمتدّ على أربع واجهات أمامية فوق نظام خلفي واحد مشترك مبني على Django REST: متجر ويب على Next.js 16 (وهو سطح الاكتشاف على سطح المكتب وواجهة تحسين محرّكات البحث)، وصفحة هبوط تحريرية للعلامة بالأردية بالكامل، وتطبيق Flutter أصلي للمشتري، ولوحة Flutter كاملة للبائع. وتتمحور دراسة الحالة هذه حول المتجر الإلكتروني — أحدث الأجزاء وأكثرها تطلّبًا — بينما يمتدّ السوق الذي ينتمي إليه إلى الجوال كذلك.

التحدي

أشهر المنتجات الإقليمية في باكستان تعيش في بازارات واقعية: معروفة في مدينتها، يصعب الوصول إليها خارجها، ويكاد يستحيل شراؤها من الخارج. ونقلها إلى الإنترنت عنى حلّ عدّة مشكلات دفعة واحدة. كان على التجربة أن تكون ثنائية اللغة حقًا — إنجليزية وأردية بتخطيط فعلي من اليمين إلى اليسار وخطّ نستعليق، لا ترجمة ملحقة على عجل. وكان عليها أن تُسعّر بـعملات متعدّدة لجالية منتشرة حول العالم. وكان عليها أن تكون جديرة بالثقة: دفع آمن مُتحقَّق منه على الخادم، ووسيلة يُثبت بها المشتري أن المنتج المادي أصلي. وكان عليها أن تكون علامة واحدة متماسكة عبر الويب والتطبيقات الأصلية على الجوال، تخدم المشترين والبائعين الذين يديرون المتاجر معًا. وكان عليها أن تكون سريعة على هواتف الفئة المتوسّطة وعلى الشبكات الباكستانية، وقابلة للاكتشاف في محرّكات البحث — فالمتجر بلا قيمة إن عجزت Google عن الزحف إليه.

تصميم النظام

كيف يعمل

01/04
01

إتمام دفع مُتحقَّق منه على الخادم — Stripe أو الدفع عند الاستلام

النظام الخلفي هو من يُسعّر كل طلب ويصرّح به؛ ولا يُؤتمن المتصفّح على المال.

  1. 1يفتح المتسوّق صفحة إتمام الدفع؛ فتُحمَّل العناوين المحفوظة وأي كوبونات لديه، ويُختار العنوان الافتراضي تلقائيًا
  2. 2اختيار البطاقة يُنزّل Stripe.js عند الحاجة ويضيف رسم الخدمة المقود بالإعدادات؛ أمّا اختيار الدفع عند الاستلام فيتخطّاه تمامًا
  3. 3يُطبَّق كوبون من مكافآت المتسوّق أو يُكتب يدويًا، ويتحقّق منه النظام الخلفي مقابل إجمالي السلّة
  4. 4في حالة البطاقة يُعيد النظام الخلفي سرّ الدفع، وتجمع Stripe Elements بيانات البطاقة، ثم يُنهي استدعاء تأكيد الطلب؛ أمّا في الدفع عند الاستلام فيُنشئ النظام الخلفي الطلب مباشرة
  5. 5تُفرَّغ السلّة وتظهر شاشة تأكيد متحرّكة تعرض رقم الطلب وجدولًا زمنيًا لما سيحدث تاليًا
02

إنشاء حساب برمز OTP مع التقاط الإحالة

رابط مشاركة يتحوّل إلى حساب مُحال ومُوثَّق دون مغادرة مسار الشراء.

  1. 1يصل المتسوّق عبر رابط تسجيل يحمل رمز إحالة، فيُلتقط الرمز ويُملأ مسبقًا
  2. 2يُدخل اسمًا ورقم هاتف أو بريدًا إلكترونيًا وكلمة مرور، مع تحقّق فوري أثناء الإدخال
  3. 3يُرسل النظام الخلفي رمزًا من ستة أرقام؛ وتنتقل الواجهة إلى خطوة تحقّق فيها خيار إعادة الإرسال
  4. 4عند التحقّق يُنشأ الحساب وتُخزَّن الرموز ويُربط المُحيل ويُمنح كوبون ترحيبي
  5. 5يعود المتسوّق إلى حيث كان — فيستأنف إتمام الدفع إن كان في منتصفه، وإلا فإلى الصفحة الرئيسية
03

مسح الرمز لتأكيد التسليم مع التقييم

رمز QR على الطرد يُغلق الدائرة — يؤكّد الاستلام، ويُثبت الأصالة، ويدعو إلى التقييم.

  1. 1على طلب في عهدة شركة الشحن، يضغط المشتري على «امسح لتأكيد الاستلام» (أو يعلّمه مستلَمًا يدويًا)
  2. 2يفتح ماسح الكاميرا، مع بديل بإدخال الرمز أو الرابط يدويًا، ويفكّ ترميز رمز الطرد
  3. 3يتحقّق النظام الخلفي من أن الرمز أصلي وأنه يخصّ هذا الطلب، ثم يعلّمه مُسلَّمًا
  4. 4تُفتح دعوة للتقييم؛ فيقيّم المشتري كل منتج استلمه بالنجوم وبتعليق
  5. 5تُحدَّث صفحة الطلب إلى حالته المُسلَّمة والمُقيَّمة
04

التوليد المسبق والإحياء والتوطين

كيف تُقدَّم صفحة المتجر بسرعة وبصورة صحيحة في أي من اللغتين وبأي عملة.

  1. 1تُولَّد مسارات اللغات مسبقًا عند البناء، مع تثبيت اللغة والاتجاه الصحيحين داخل HTML
  2. 2يجلب مكوّن على الخادم بيانات ما يظهر أعلى الصفحة مسبقًا ويُدرجها فيها بصيغة مُجفَّفة
  3. 3يُحيي المتصفّح تلك الذاكرة المؤقتة، وتُبقيها TanStack Query حيّة دون إعادة جلب ما لديها أصلًا
  4. 4عند التحميل يُطبّق مُوفِّقٌ العملةَ واللغةَ المحفوظتين للزائر، فيُبطل الاستعلامات المتأثّرة وحدها لتتحدّث الأسعار والترجمات دون وميض
  5. 5تبديل اللغة يقلب التخطيط إلى الاتجاه من اليمين إلى اليسار ويستبدل بالخطوط خطوطَ نستعليق؛ وتبديل العملة يعيد جلب الأسعار المحوّلة على الخادم

أبرز الميزات

  • متجر ثنائي اللغة بالإنجليزية والأردية، بتخطيط كامل من اليمين إلى اليسار وخطّ نستعليق مستضاف ذاتيًا
  • إتمام دفع بالبطاقة عبر Stripe مُتحقَّق منه على الخادم، إضافة إلى الدفع عند الاستلام، مع رسم خدمة للبطاقة مقود بالإعدادات
  • تسعير متعدّد العملات (PKR وUSD وAED وSAR وGBP) مع تحويل على الخادم لكل طلب
  • سلّة من متجر واحد مرجعُها الخادم، مع مسار لحلّ تعارض المتاجر
  • بحث بأوجه تصفية مع تمرير لا نهائي، وأوجه للفئة والمدينة والسعر والتقييم محسوبة في جهة العميل
  • تتبّع الطلبات عبر 15 شركة شحن باكستانية، واستردادات ومرتجعات (Easypaisa · JazzCash · البنك) وتقييمات بعد التسليم
  • تحقّق من أصالة المنتج عبر رمز QR، ومسح الرمز لتأكيد الاستلام عند التسليم
  • برنامج إحالة مع كوبونات ترحيبية، إضافة إلى محرّك كوبونات بنوعَي FLAT/PERCENTAGE عند إتمام الدفع
  • متاجر بائعين بعلامتهم الخاصة على مسارات اسمية مجرّدة، تُولَّد ثابتًا وتحمل هوية البائع نفسه
  • تطبيق Flutter أصلي للمشتري ولوحة Flutter كاملة للبائع (المتجر، وإدارة المنتجات، وطابور الطلبات، والمبيعات) على النظام الخلفي نفسه، مع تنبيهات فورية بالطلبات

Outcomes

  • نقل منتجات باكستان الإقليمية المميّزة إلى الإنترنت في سوق ثنائي اللغة وجاهز للاتجاه من اليمين إلى اليسار، على الويب وعلى الجوال بتطبيقات أصلية
  • مدفوعات مُتحقَّق منها على الخادم (Stripe) إضافة إلى الدفع عند الاستلام، مع تسعير متعدّد العملات لجالية منتشرة حول العالم
  • هندسة أداء مقيسة — خفض LCP على الجوال إلى أقل من النصف، وتقليص حمولات واجهة البرمجة بنحو 80% بعد الضغط بـ gzip، وإزالة انزياح التخطيط
  • توحيد أربع واجهات أمامية — المتجر الإلكتروني، وصفحة العلامة، وتطبيق المشتري، ولوحة البائع — على نظام خلفي واحد وعلامة واحدة

أعمال أخرى

Makkenha preview
سوق إلكتروني

Makkenha

سوق لقطع غيار السيارات في السعودية بنموذج الدفع بعد تأكيد التوفّر

عرض المشروع
HG NorthCrafts preview
التجارة الإلكترونية

HG NorthCrafts

متجر للمنتجات المصنوعة يدويًا، صُمّم ونُشر سحابيًا من البداية إلى النهاية

عرض المشروع