نبذة عن المشروع
Online Shop — REST API لنظام تجارة إلكترونية مبني بـ NestJS، يدعم نوعين من المستخدمين (التاجر والعميل) مع نظام متكامل للطلبات، المرتجعات، والمدفوعات، ويتكامل مع خدمة تخزين صور سحابية.
أبرز المميزات التقنية
1. بنية معمارية منظمة (Modular Architecture)
المشروع مقسّم إلى وحدات مستقلة (auth, user, product, order, files, database) مع فصل واضح بين المسؤوليات، مما يجعله قابلاً للتوسع والصيانة.
2. نظام مصادقة وصلاحيات متكامل
JWT Authentication مع Argon2 لتشفير كلمات المرور (أكثر أماناً من bcrypt)
Role-Based Access Control (RBAC) — صلاحيات مختلفة بين MERCHANT وCUSTOMER
مسارات عامة (@IsPublic) عبر custom decorator بدلاً من إزالة الحماية الشاملة
3. Idempotency (ضمان عدم تكرار العمليات)
IdempotencyInterceptor مخصص يضمن أن العمليات الحساسة (إنشاء طلب، ترجيع) لا تُنفَّذ مرتين عند تكرار الطلب، باستخدام جدول في قاعدة البيانات لتخزين النتائج.
4. Zod للتحقق من البيانات
استخدام Zod v4 بدلاً من class-validator التقليدي مع ZodValidationPipe مخصص، مما يوفر type inference قوي ورسائل خطأ واضحة.
5. رفع الصور على السحابة (ImageKit)
تكامل مع ImageKit عبر Multer لرفع صور المنتجات، مع FileCleanupInterceptor يحذف الصور تلقائياً عند فشل العملية لتجنب البيانات المتسربة.
6. معالجة موحدة للاستجابات والأخطاء
ResponseInterceptor يلفّ كل استجابة ناجحة بشكل موحد: { success, data, meta }
Exception Filters متعددة: HTTP, Prisma, Zod, ImageKit, وUncaught — لكل نوع خطأ معالج مخصص
7. نظام طلبات ومرتجعات مالي
ربط كل طلب بـ UserTransaction (DEBIT/CREDIT)
دعم المرتجعات الجزئية مع تعديل الكميات وتسجيل المعاملة المالية العكسية
8. Pagination موحد
طبقة pagination مشتركة في DatabaseService مع Zod schemas معاد استخدامها عبر جميع endpoints.
9. Logging وRate Limiting
LoggingInterceptor لقياس زمن الاستجابة
ThrottlerModule لحماية API من الإساءة
10. Seeding وBigInt Support
بيانات تجريبية بـ Faker.js
دعم BigInt في JSON تلقائياً
المكدس التقني (Tech Stack)
Framework: NestJS 11
Database ORM: Prisma 6 + MySQL
Auth: JWT + Argon2
Validation: Zod v4
File Storage: ImageKit
Testing: Jest + Supertest
Docs: Swagger/OpenAPI
Language: TypeScript 5.7