EN

Sendy

Sendy منصة متعددة المستأجرين لعمليات التوصيل والتجارة الإلكترونية: Backend واحد يخدم لوحات تحكم الإدارة، وتطبيق السائق، ومتاجر العملاء، والأنظمة الخارجية لشركات التوصيل والتجزئة العاملة في العراق. يبني أحمد الـ Backend بالكامل: واجهة الـ API، وقاعدة البيانات، والتكاملات مع مزوّدي الخدمة، ثم يوصل واجهات React بها. المنصة تعمل فعليًا وفي تطوير إنتاجي مستمر.

المخرجات

واجهة API بـ ASP.NET Core (.NET 8)

PostgreSQL / EF Core

بث لحظي بـ SignalR (3 محاور)

إطار تكامل مع مزوّدي الخدمة

مراسلة بالذكاء الاصطناعي وخادم MCP

API تشغّل 5 واجهات React

السنة

2026

الدور في المشروع

مطوّر برمجيات خلفية

الموقع المباشر

معمارية النظام

كيف بُني

تطبيقات العملاء

لوحة التحكم

التجّار، المشرفون، شركات التوصيل، مركز الاتصال، المروّجون

React 19 · Vite 8 · TypeScript

تطبيق السائق

السائقون في الطريق (PWA)

React 19 · Vite 8 · PWA

المتاجر الإلكترونية

المتسوّقون، على نطاقات فرعية ونطاقات مخصصة

React 19 · Cloudflare Workers

التطبيق المصغّر للعملاء

تتبّع الطلبات داخل منظومة SuperQi

React 19 · Vite

وثائق المطوّرين

الأنظمة الخارجية التي تتكامل بمفتاح API

Next.js 15

مهام خلفية

  • إرسال الـ webhooks بصندوق صادر وإعادة محاولة
  • مهمة الدفعات للمحافظ وتسليم النقد
  • إرسال رسائل الذكاء الاصطناعي لوكلاء المتاجر
  • استقبال webhooks من Meta وكنسها وفحص صحة الاتصال

لحظي

  • TrackingHub — حالة الطلب وموقع السائق لحظيًا
  • StoreConversationHub — صندوق الوارد متعدد القنوات
  • WebsiteChatHub — أداة الدردشة في المتجر

Sendy API — نظام أحادي معياري

ASP.NET Core 8 · C# · EF Core 8 · SignalR · Hangfire · JWT + مفاتيح API

أسطح المسارات

/auth/admin/store/delivery-company/driver/ecommerce-platform/branch/promoter/public

الطبقات

  1. 01Api — 164 متحكّمًا خلف متحكّمات أساس لكل منطقة، 701 إجراء محكوم بالصلاحية، حدود معدل لكل مفتاح
  2. 02Application — خدمات، مدقّقات، كتالوج صلاحيات بـ 243 مفتاحًا، تنسيق أدوات الذكاء الاصطناعي
  3. 03Domain — 99 كيانًا: المتاجر، الطلبات، التنفيذ، الكتالوج، المالية، المراسلة، التكاملات
  4. 04Infrastructure — EF Core + Npgsql، معترضات تدفع الطلبات إلى المزوّدين، محوّلات، hubs، مهام

محوّلات المزوّدين

  • التوصيل — الوسيط، Boxy، Hi-Express (دفع الطلب، مزامنة الحالة، تجاوز الأعطال)
  • المدفوعات — QiCard، AsiaPay، ZainCash، Wayl، SwiftPayIQ (webhooks موثّقة بـ HMAC)
  • Meta Graph — قنوات WhatsApp وInstagram وMessenger
  • Anthropic Claude وOpenAI — وكلاء ذكاء اصطناعي يختارهم المتجر
  • نطاقات Cloudflare المخصصة — نطاقات متاجر موثّقة
  • تخزين S3 وAzure Blob · خدمة المسافات

البيانات

PostgreSQL

99 جدولًا، 64 ترحيل EF Core، معزولة حسب المتجر

Redis

تخزين مؤقت اختياري وعدّادات حدّ المعدل

تخزين الكائنات

وسائط المنتجات، الملصقات، الإيصالات، وثائق KYC

العزل
كل متجر معزول على قاعدة كود واحدة وقاعدة بيانات واحدة؛ ولشركات التوصيل والفروع والمنصات أسطح خاصة بها
الهوية
جلسات JWT للوحات التحكم وسطح موازٍ بمفاتيح API لأنظمة المتاجر الخارجية، بنموذج صلاحيات واحد خلفهما
الصلاحيات
243 صلاحية مسمّاة مطبّقة على 701 إجراء في المتحكّمات، مقيّدة بالمستأجر، مع حدّ معدل لكل مفتاح
الـ API
164 متحكّمًا · 1,120 نقطة نهاية HTTP · 9 أسطح مسارات
نموذج البيانات
99 كيان نطاق مربوطة 1:1 بـ 99 جدول PostgreSQL · 64 ترحيلًا
اللحظي
3 hubs في SignalR: التتبّع، محادثات المتجر، دردشة الموقع؛ روابط تتبّع عامة برموز
التكاملات
3 شركات توصيل + 5 بوابات دفع خلف عقد مزوّد واحد؛ محوّلات Meta والذكاء الاصطناعي والنطاقات المخصصة
الجودة
812 دالة اختبار xUnit (758 حقيقة + 54 نظرية)؛ نشر بالحاويات
الحالة
يعمل على sendyiq.com، في تطوير إنتاجي منذ أبريل 2026

طلب واحد من البداية إلى النهاية: متجر يسلّم طلبًا لشركة توصيل

  1. 01ينشئ التاجر الطلب في معالج لوحة التحكم — أو يرسله نظام خارجي بمفتاح API الخاص بالمتجر.
  2. 02تحدّد طبقة JWT أو مفتاح API المتجر؛ ونموذج الصلاحيات نفسه يفوّض أيًّا من المتصلَين.
  3. 03يُكتب الطلب مع سجل حالاته؛ يلاحظ معترض EF Core التغيير ويُدرج دفع الطلب إلى المزوّد في الطابور.
  4. 04يحوّل محوّل مزوّد التوصيل الخاص بالمتجر الطلب إلى الوسيط أو Boxy أو Hi-Express ويرسله؛ وعند الفشل يُختار المزوّد التالي المهيّأ.
  5. 05يصل webhook المزوّد موثّقًا بـ HMAC؛ ولا يمكن لحالة مكرّرة أو خارج الترتيب أن تفسد الطلب.
  6. 06تنتشر تغييرات الحالة عبر TrackingHub إلى لوحة التحكم وتطبيق السائق ورابط التتبّع الخاص بالعميل.
  7. 07تمرّ الـ webhooks الصادرة إلى أنظمة المتجر عبر الصندوق الصادر مع إعادة المحاولة على Hangfire.
  8. 08عند التسليم تُسوّى مبالغ الدفع عند الاستلام والعمولات في المحافظ؛ وتعمل الدفعات وتسليم النقد كمهام خلفية.

نظرة على التطبيقات

التطبيقات

لوحة تحكم التاجر

أصحاب المتاجر وموظفوهم: المنتجات والطلبات والتوصيل والمدفوعات والعملاء والدعم في مكان واحد، بالعربية أو الإنجليزية.

React 19 · Vite 8 · TypeScript · تنقّل حسب الدور · SPA واحد يخدم أيضًا المشرفين وشركات التوصيل ومركز الاتصال والمروّجين

  • الرئيسية بقمع دورة حياة الطلب والإيراد اليومي
  • قائمة الطلبات بإجراءات جماعية واستيراد وQR وطباعة؛ ومعالج إنشاء طلب بمنتقي خريطة ومتغيرات
  • صندوق وارد متعدد القنوات (WhatsApp، Instagram، Messenger، دردشة الموقع) وإعداد وكيل الذكاء الاصطناعي
  • جلسات الكاشير / نقاط البيع، المخزون، المستودعات، الموردون، المصاريف، واستوديو المتجر

لوحتا الإدارة وشركات التوصيل

مشغّلو Sendy أنفسهم، وشركات التوصيل بأساطيلها وبرج المراقبة ومحافظها.

الـ SPA نفسه، أسطح مسارات ومجموعات صلاحيات منفصلة لكل دور

  • نظرة عامة على المنصة: التجّار، شركات التوصيل، الاشتراكات، استهلاك الذكاء الاصطناعي، سجلات التدقيق
  • برج مراقبة شركة التوصيل بخريطة حيّة وسائقي الأسطول والمستودعات
  • المحافظ والدفاتر وتسليم النقد والدفعات
  • روابط المزوّدين ومفاتيح API والـ webhooks ووصول MCP لكل مستأجر

تطبيق السائق والتطبيق المصغّر للعملاء

السائقون يمسحون ويسلّمون في الطريق؛ والعملاء يتتبّعون الطلب من داخل منظومة SuperQi.

تطبيقات React 19 PWA · مسح QR · موقع حيّ عبر SignalR

  • رئيسية السائق على خريطة حيّة مع بطاقة الطلب النشط والتحويل إلى الملاحة
  • طابور الطلبات، تحديث الحالة مع لوحة التتبّع، المحفظة والتسليمات
  • بحث العميل وتتبّعه برقم الطلب أو QR مع الجدول الزمني للرحلة
  • طلبات الدعم بالصور من التطبيق المصغّر

المتاجر وصفحة الهبوط ووثائق المطوّرين

المتسوّقون على نطاق كل متجر، والزوار على sendyiq.com، والمطوّرون الذين يتكاملون بمفتاح API.

قوالب متاجر React 19 على نطاقات Cloudflare Workers الفرعية ونطاقات مخصصة موثّقة · وثائق بـ Next.js 15

  • قوالب متاجر مع السلة والدفع وأداة دردشة الموقع
  • نطاقات فرعية ونطاقات مخصصة موثّقة عبر Cloudflare مع TLS
  • موقع تسويقي بصفحات الحلول والأسعار وشركات التوصيل
  • مرجع Store API مع وحدة تجربة مباشرة ومجموعة Postman

ماذا يفعل

الوحدات

01

الطلبات والتنفيذ

  • معالج إنشاء الطلبات، إجراءات جماعية، استيراد، QR وطباعة
  • سجل الحالات مع روابط تتبّع عامة برموز
  • إسناد السائقين، تدفقات المسح، والموقع الحيّ
  • المرتجعات والتقييمات وروابط دفع الطلب
02

الكتالوج والمخزون

  • منتجات بمتغيرات وصور وتصنيفات واستيراد جماعي
  • المستودعات وحركات المخزون والموردون وأوامر الشراء
  • أحجام الطرود وقوالب الطباعة
  • حدود المنتجات لكل باقة اشتراك
03

المتاجر والنطاقات

  • استوديو المتجر بقوالب ومعاينة حيّة
  • نطاقات فرعية على Cloudflare Workers
  • نطاقات مخصصة موثّقة عبر Cloudflare مع TLS
  • أداة دردشة الموقع موصولة بصندوق الوارد
04

مزوّدو التوصيل

  • الوسيط وBoxy وHi-Express خلف عقد واحد
  • دفع الطلبات ومزامنة الحالة تلقائيًا عبر معترضات EF Core
  • تجاوز الأعطال بين المزوّدين المهيّئين
  • بيانات اعتماد وروابط مزوّدين لكل متجر
05

المدفوعات والمالية

  • بوابات QiCard وAsiaPay وZainCash وWayl وSwiftPayIQ
  • المحافظ والعمولات وتسليم النقد والدفعات
  • الفواتير وفوترة الاشتراكات والكوبونات
  • المصاريف وتحليلات المتجر
06

الكاشير / نقاط البيع

  • جلسات كاشير بفتح وإغلاق واستيراد جماعي
  • طباعة حرارية للملصقات والإيصالات
  • منتجات مثبّتة وبيع سريع
  • طابعات وقوالب طباعة لكل متجر
07

المراسلة والذكاء الاصطناعي

  • WhatsApp وInstagram وMessenger ودردشة الموقع في نموذج محادثة واحد
  • وكيل ذكاء اصطناعي يختاره المتجر (Claude أو GPT) بأدوات تصل إلى عمليات المتجر
  • استهلاك الذكاء الاصطناعي مقاس لكل متجر للفوترة
  • خادم MCP بـ OAuth وتسجيل عملاء ديناميكي
08

التكاملات

  • مفاتيح API للمتاجر تعكس سطح لوحة التحكم
  • Webhooks صادرة بصندوق صادر وإعادة محاولة وسجل تسليم
  • بوابة منصات التجارة الإلكترونية لمشغّلي المتاجر المتعددة
  • وثائق مطوّرين بوحدة تجربة مباشرة
09

عمليات المنصة

  • التجّار وشركات التوصيل والسائقون والتحقق من الهوية KYC
  • تذاكر الدعم والتقييمات وطلبات العرض التجريبي
  • سجلات التدقيق ونشاط تسجيل الدخول وسجل حالات الطلبات
  • إدارة الوصول والاشتراكات

قصص هندسية

المشكلات التي تستحق الحكاية

المشكلة

يحتاج كل متجر على Sendy إلى شركاء توصيل وطرق دفع وأدوار موظفين ومتجر عام خاصة به، معزولة تمامًا عن بيانات بقية المتاجر، على قاعدة كود واحدة مشتركة.

يجب أن تكون إمكانات المتجر متاحة بطريقتين: من لوحات تحكم Sendy نفسها (جلسات JWT) ومن أنظمة خارجية تتكامل مباشرة مع المتجر (مفاتيح API)، وكلتاهما محكومتان بنموذج الصلاحيات ذاته.

ثلاث شركات توصيل وخمس بوابات دفع، لكل منها واجهة API وصيغة Webhook مختلفة، يجب توحيدها خلف عقد داخلي واحد دون أن يؤدي تعطّل مزوّد أو تكرار Webhook إلى إفساد حالة الطلبات.

يتوقع العملاء متابعة حالة الطلب لحظيًا والحصول على الدعم عبر WhatsApp وInstagram وMessenger ودردشة الموقع، مع توجيه المحادثة إلى وكيل الذكاء الاصطناعي الذي اختاره كل متجر، واحتساب التكلفة على ذلك المتجر.

الدور والمسؤوليات

معمارية الـ Backend عبر واجهة API بـ ASP.NET Core تضم 164 متحكّمًا و1,120 نقطة نهاية، مع ترحيلات EF Core لـ 90 كيانًا في النطاق.

طبقتا المصادقة بـ JWT ومفاتيح API، ونموذج الصلاحيات الذي يحكمهما معًا: 231 صلاحية مطبّقة عبر 679 نقطة تحقق.

طبقة التكامل مع شركات التوصيل وبوابات الدفع: التحقق من الـ Webhook، ومزامنة الطلبات، ومعالجة إعادة المحاولة.

الميزات اللحظية عبر SignalR (تتبّع الطلبات ودردشة العملاء) على ثلاثة محاور.

طبقة الذكاء الاصطناعي وMCP: مراسلة متعددة القنوات موجَّهة إلى Claude أو OpenAI، وخادم MCP مؤمَّن بـ OAuth يتيح عمليات المتجر للوكلاء.

812 دالة اختبار xUnit تدعم الـ API.

طبقتا مصادقة، ونموذج صلاحيات واحد

كان على كل إمكانية في المتجر أن تكون متاحة من لوحات تحكم Sendy القائمة على الجلسات ومن الأنظمة الخارجية التي تتصل بمفتاح API، دون الحفاظ على مسارين منفصلين للتفويض قد يتباعدان مع الوقت. نموذج صلاحيات واحد (231 صلاحية مسمّاة مطبّقة عبر 679 نقطة تحقق) يُقيَّم لطلبات JWT ومفاتيح API على حد سواء، مع تقييد مفاتيح API إضافيًا بنطاق كل متجر وحدّ للمعدل، فلا يحتاج تغيير الصلاحية إلا إلى مكان واحد.

توحيد مزوّدي التوصيل والدفع

ثلاث شركات توصيل (الوسيط، Boxy، Hi-Express) وخمس بوابات دفع (QiCard، AsiaPay، ZainCash، Wayl، SwiftPayIQ) لكل منها واجهة API وشكل Webhook مختلف، وقد يربط المتجر أكثر من واحد في الوقت نفسه. يقف إطار مزوّدين قابل للتوسيع خلف عقد داخلي واحد، مع Webhooks موثّقة بـ HMAC، وبيانات اعتماد لكل متجر، واعتراضات EF Core تدفع الطلبات وتزامن حالتها تلقائيًا، مدعومة بتتبّع تسليم عبر صندوق صادر مع إعادة المحاولة على Hangfire. إضافة مزوّد أو استبداله تغييرٌ في الإعدادات والمحوّل لا إعادة كتابة لمنطق الطلبات، وإخفاقات الـ Webhook تُعاد محاولتها بدل أن تُسقط تحديثات الطلبات بصمت.

مراسلة متعددة القنوات ووكلاء ذكاء اصطناعي

تُوحَّد محادثات WhatsApp وInstagram وMessenger ودردشة الموقع في نموذج محادثة واحد، ويختار كل متجر وكيل الذكاء الاصطناعي الذي يجيب باسمه (Anthropic Claude أو OpenAI GPT)، مع قياس الاستهلاك لكل متجر لأغراض الفوترة.

خادم MCP مؤمَّن بـ OAuth مع تسجيل عملاء ديناميكي يتيح مجموعة محدودة من عمليات المتجر كأدوات MCP بدل سطح الـ API الكامل، فيتكامل الوكلاء مع سطح أدوات ضيّق وقابل للتدقيق لا مع وصول واسع للمنصة.

تتبّع الطلبات لحظيًا

يضع العميل طلبًا عبر المتجر أو عبر قناة متكاملة؛ فيُحفظ في بيانات المتجر عبر الـ API المحكومة بالصلاحيات.

تدفع اعتراضات EF Core الطلب إلى مزوّد التوصيل الذي اختاره المتجر؛ وتصل تغييرات الحالة من المزوّد على شكل Webhooks موثّقة بـ HMAC تُعالَج عبر صندوق صادر مع إعادة المحاولة على Hangfire.

تُبثّ تحديثات الحالة عبر محاور SignalR إلى لوحات التحكم وإلى رابط تتبّع عام برمز مميز، فيرى العميل الحالة لحظيًا دون حساب، ويراها موظفو المتجر في لوحة الإدارة وتطبيق السائق.

النتيجة

خمس واجهات React 19 + TypeScript: لوحة تحكم الإدارة، وتطبيق السائق، والمتجر، وتطبيق العميل المصغّر، وموقع توثيق للمطوّرين بـ Next.js، كلها بالعربية والإنجليزية، وتدير عمليات إنتاج حقيقية لشركات توصيل وتجزئة في العراق. تمتد المنصة على 164 متحكّمًا و99 كيانًا و64 ترحيلًا، مدعومة بـ 812 دالة اختبار xUnit، مع متاجر عامة على نطاقات فرعية ونطاقات مخصصة موثّقة عبر Cloudflare.

ما تعلّمته

تجريد المزوّدين يسدّد تكلفته لحظة يحتاج مزوّد ثانٍ إلى الإمكانية نفسها.

نموذج صلاحيات مشترك بين أنظمة المصادقة يستحق التعقيد الإضافي: فهو السبيل الوحيد كي لا ينتهي نوعان مختلفان تمامًا من العملاء بأخطاء تفويض متباينة.

موثوقية الـ Webhook مسألة تصميم لا حالة حدّية: يجب أن يكون الصندوق الصادر وإعادة المحاولة موجودَين منذ البداية.

أعمال مختارة

أعمال

وصلت

إلى الإنتاج فعلًا.

الصفحة الرئيسية لمنصة Sendy — أدر كل طلب من أول نقرة حتى التسليم النهائي

Sendy

منصة متعددة المستأجرين لعمليات التوصيل والتجارة الإلكترونية: واجهة API واحدة بـ ASP.NET Core، خمس واجهات React، تتبّع لحظي، وأدوات متاجر مدعومة بالذكاء الاصطناعي.

منصة ويب • لوجستيات وتجارة إلكترونية • 2026

بطاقة مشروع IMMAR

IMMAR

منصة تعليم إلكتروني متعددة المعلّمين للعراق: API واحدة بـ ASP.NET Core، ولوحة تحكم React، وتطبيق طلاب Flutter، مع فيديو محمي وامتحانات وتسويات.

منصة تعليم إلكتروني • التعليم • 2026

بطاقة مشروع Nawa

Nawa

منصة متعددة المستأجرين لمراكز اتصال بالذكاء الاصطناعي وعمليات الخدمة: صوت ودردشة لحظيان عبر WebRTC وTwilio، وتنسيق أدوات محكوم بالسياسات، واستهلاك قابل للفوترة.

منصة عمليات بالذكاء الاصطناعي • صوت ودردشة • 2025

بطاقة مشروع Madhmoon

Madhmoon

مشروع ابتكار في التقنية المالية للشمول الرقمي في العراق، صمّمه فريق متعدد التخصصات وتحقق منه وقدّمه. المركز الأول في هاكاثون التقنية المالية.

مفهوم تقنية مالية • هاكاثون التقنية المالية • المركز الأول

بطاقة مشروع NANO

NANO

تطبيق ويب للتعرّف الضوئي على الحروف بالذكاء الاصطناعي يستخرج النص من الصور ويرقمنه لحظيًا. المركز الأول في هاكاثون ITS الأول.

تطبيق ويب OCR بالذكاء الاصطناعي • هاكاثون ITS الأول • المركز الأول

بطاقة مشروع Core Banking

Core Banking

مفهوم لنظام مصرفي أساسي يغطي التدفّقات المعاملاتية ومتطلبات الاتساق. المركز الثاني في هاكاثون ITS الثاني.

مفهوم تقنية مالية • هاكاثون ITS الثاني • المركز الثاني

بطاقة مشروع Form Builder

Form Builder

منشئ نماذج بُني من أجل سهولة الاستخدام والتسليم السريع والتعاوني تحت ضغط وقت الهاكاثون. المركز الثاني في أسبوع ريادة الأعمال.

تطبيق ويب • أسبوع ريادة الأعمال • المركز الثاني

الخبرات

أين تعلّمت ذلك.

أحمد عماد طارق في الحفل الختامي لهاكاثون التقنية المالية

تريد القصة كاملة؟

السيرة الذاتية فيها التفاصيل: الأدوار، والأدوات، والهاكاثونات، والتعليم.

حمّل سيرتي الذاتيةPDF، صفحة واحدة

أو راسلني بالبريد، بلا أي ضغط

ahmed.emadtarq@gmail.com