عنوان المشروع:
واجهة برمجة تطبيقات للتجارة الإلكترونية (E-Commerce API)
وصف المشروع:
نظام E-Commerce API هو خدمة خلفية (Backend Service) توفر جميع الوظائف الأساسية المطلوبة لبناء منصة تسوق إلكتروني.
تعمل هذه الواجهة كـ "العقل" الذي يدير:
المستخدمين
المنتجات
الطلبات
عمليات الدفع
المخزون
وتُوفّر نقاط نهاية (Endpoints) يمكن لأي تطبيق أمامي (موبايل – ويب – سطح مكتب) استخدامها لتشغيل متجر إلكتروني متكامل.
أهداف المشروع:
توفير نظام خلفي آمن وقابل للتوسع لمتاجر التجارة الإلكترونية.
تمكين إدارة المنتجات والفئات والتصفية والبحث.
إدارة حسابات العملاء وتسجيل الدخول.
التعامل مع عربة التسوق وإتمام الطلبات.
دعم بوابات الدفع الإلكترونية المختلفة.
تحديث المخزون بشكل فوري عند الشراء.
️ المميزات الأساسية:
1. إدارة المستخدمين وتسجيل الدخول
تسجيل مستخدم جديد / تسجيل الدخول (باستخدام JWT).
صلاحيات مختلفة (مسؤول / عميل).
تعديل الملف الشخصي للمستخدم.
2. إدارة المنتجات
إضافة / تعديل / حذف / عرض المنتجات.
تقسيم المنتجات لفئات رئيسية وفرعية.
البحث عن المنتجات باستخدام (السعر – العلامة التجارية – الفئة).
عرض صور المنتج ووصفه.
3. عربة التسوق
إضافة / إزالة منتجات من العربة.
تحديث الكميات.
عربة تسوق دائمة مرتبطة بحساب المستخدم.
4. إدارة الطلبات
إتمام الطلب من العربة.
تتبع حالة الطلب (قيد المعالجة – تم الشحن – تم التسليم – مُلغى).
عرض سجل الطلبات السابقة للمستخدم.
5. الدفع الإلكتروني
ربط النظام ببوابات دفع (Stripe – PayPal – PayMob – فوري).
معالجة عمليات الاسترجاع أو فشل الدفع.
6. إدارة المخزون
خصم الكميات مباشرة بعد الشراء.
إشعارات للمسؤول عند انخفاض المخزون.
7. لوحة تحكم المسؤول (Admin APIs)
إدارة المستخدمين والأدوار.
إدارة الطلبات وتتبع الإيرادات.
إنشاء تقارير (المبيعات – الأرباح – المنتجات الأكثر طلباً).
️ التقنيات المقترحة:
الجانب الخلفي (Backend): Node.js (Express) / Django REST Framework / ASP.NET Core Web API
قاعدة البيانات: MySQL / PostgreSQL / MongoDB
المصادقة: JWT / OAuth 2.0
التوثيق (Documentation): Swagger / Postman
سيناريو عمل النظام:
يقوم المستخدم بإنشاء حساب → يحصل على رمز JWT.
يتصفح المنتجات عبر /products.
يضيف منتجات إلى عربة التسوق عبر /cart/add.
يُنشئ طلب جديد /order/create.
يتم تحويله لبوابة الدفع → في حال النجاح يتم تأكيد الطلب.
المدير يغيّر حالة الطلب عبر /order/:id/status.