تفاصيل العمل

نبذة عن المشروع

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

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
عدد المشاهدات
12
تاريخ الإضافة
تاريخ الإنجاز
المهارات