✅ الهدف من المشروع
كان الهدف من هذا المشروع بناء نظام Backend متكامل لمتجر إلكتروني (Smart Market) يكون آمنًا، قابلًا للتوسع، وسهل الإدارة، مع دعم أنظمة الدفع الإلكتروني (Stripe و PayPal) بطريقة مرنة تعتمد على Design Patterns لسهولة إضافة أي وسيلة دفع مستقبلًا دون تعديل جذري في الكود.
ركزت في المشروع على:
بناء واجهات برمجية منظمة (RESTful APIs)
تطبيق مبادئ Clean Architecture و SOLID
دعم الدفع الإلكتروني بطريقة احترافية وقابلة للتوسع
تحسين الأداء وسهولة الصيانة
✅ الخطوات والمنهجية المتبعة في التنفيذ
1️⃣ تحليل المتطلبات
تم تحديد الوظائف الأساسية للنظام مثل:
إدارة المستخدمين (تسجيل الدخول والصلاحيات)
إدارة المنتجات والتصنيفات
إدارة الطلبات
نظام الدفع الإلكتروني
دعم أكثر من بوابة دفع (Stripe و PayPal)
وكان التحدي الرئيسي هو تصميم نظام دفع مرن يمكن توسيعه لاحقًا بسهولة.
2️⃣ تصميم هيكل النظام (Architecture)
تم تقسيم المشروع إلى وحدات مستقلة مثل:
Auth Module
User Module
Product Module
Order Module
Payment Module
وتم تطبيق Design Pattern (Strategy Pattern) في وحدة الدفع، بحيث:
يكون لكل بوابة دفع (Stripe / PayPal) Strategy مستقلة
يمكن التبديل أو إضافة بوابة جديدة دون تعديل الكود الأساسي
3️⃣ تنفيذ نظام المصادقة والصلاحيات
تم تنفيذ نظام تسجيل دخول آمن باستخدام JWT مع:
تشفير كلمات المرور
Role-based Access Control (Admin / User)
حماية المسارات الحساسة
4️⃣ بناء واجهات برمجية (RESTful APIs)
تم إنشاء APIs منظمة لإدارة:
المنتجات
الطلبات
المستخدمين
عمليات الدفع
مع توثيقها باستخدام Swagger لتسهيل استخدامها من قبل أي واجهة أمامية أو تطبيق موبايل.
5️⃣ تنفيذ نظام الدفع الإلكتروني (Stripe & PayPal)
تم بناء نظام الدفع باستخدام Design Pattern بحيث:
لكل بوابة دفع (Stripe و PayPal) كلاس مستقل ينفذ واجهة مشتركة (Payment Strategy Interface).
يتم اختيار بوابة الدفع ديناميكيًا حسب طلب المستخدم.
يسهل إضافة بوابات دفع أخرى مستقبلًا (مثل Apple Pay أو Google Pay) دون تعديل بنية النظام.
وكان التحدي هنا هو توحيد منطق الدفع مع الحفاظ على مرونة النظام وقابليته للتوسع.
6️⃣ تحسين الأداء باستخدام Redis (Caching)
تم استخدام Redis لتخزين البيانات المتكررة مثل:
قائمة المنتجات
التصنيفات
مما ساعد على تقليل الضغط على قاعدة البيانات وتحسين سرعة الاستجابة.
7️⃣ تهيئة المشروع للنشر باستخدام Docker
تم إعداد المشروع ليعمل داخل بيئة Docker لضمان:
سهولة النشر
استقرار البيئة البرمجية
سهولة نقل المشروع إلى أي خادم
✅ الأدوات والتقنيات المستخدمة
Backend Framework: NestJS
Language: TypeScript
Database: MongoDB
Authentication: JWT
Payment Gateways: Stripe, PayPal
Design Patterns: Strategy Pattern
Caching: Redis
Containerization: Docker
API Documentation: Swagger
Tools: Git, GitHub
✅ النتائج المحققة
إنشاء نظام Backend كامل لمتجر إلكتروني يدعم بوابات دفع متعددة بطريقة مرنة وقابلة للتوسع.
تحسين أداء النظام باستخدام Redis وتقليل زمن الاستجابة.
تنظيم الكود باستخدام Design Patterns مما يسهل الصيانة وإضافة خصائص جديدة.
توفير APIs واضحة وآمنة يمكن ربطها بسهولة مع أي واجهة أمامية أو تطبيق موبايل.
تجربة دفع إلكتروني مستقرة وآمنة للمستخدم النهائي.
ساهم هذا المشروع في تطوير خبرتي في:
تصميم أنظمة الدفع الإلكتروني
تطبيق Design Patterns في مشاريع حقيقية
بناء RESTful APIs احترافية
العمل باستخدام Redis و Docker
تصميم أنظمة قابلة للتوسع (Scalable Systems)