تفاصيل العمل

مشروع Web API لإدارة وتوزيع المنتجات الغذائية (نظام توزيع واقعي)

الفترة اللي فاتت اشتغلت على مشروع Web API متكامل بيحاكي نظام توزيع منتجات غذائية زي شركات جهينه.

النظام معمول باستخدام SQL Server وبيعتمد على 3-Tier Architecture عشان يكون منظم وسهل الصيانة والتوسّع.

أهم الأدوار داخل النظام:

Admin:

يملك تحكم كامل في النظام، ويقدر في أي وقت يشوف كل تفاصيل النشاط اليومي مثل:

• عدد الأوردرات اللي حصلت

• الكميات المتبقية في المخازن

• الزيارات اللي المندوبين نفذوها على مدار اليوم

Administrative:

إداري مسؤول عن المخازن والفواتير، بيربط المندوبين بالمخزون ويتابع عمليات الاستلام والإرجاع.

Sales (المندوب):

يستلم المنتجات من الإداري، يوزعها، ويسجل كل زيارة لأي محل أو عميل أثناء جولته اليومية.

لو حصلت عملية بيع أثناء الزيارة، بينشئ Order بينه وبين العميل.

وفي نهاية اليوم، لو عنده منتجات باقية، بيعمل عملية إرجاع (Return) بيرجع فيها البضاعة للإداري.

الإداري بعد كده بيراجع الكميات ويوافق عليها، والنظام بيحدث الكميات في المخزن تلقائيًا.

Customer:

بيتفاعل مع المندوبين مباشرة أثناء الزيارات اليومية لطلبات الشراء أو المتابعة.

? أهم النقاط التقنية في المشروع:

• استخدام AutoMapper بدل المابينج اليدوي → وفر مجهود كبير جدًا وخلى الكود أنظف.

• تطبيق SOLID Principles بشكل عملي → نظم الكود وخلاه قابل للتوسع.

• فهم واستخدام Dependency Injection (DI) بعمق → زوّد قابلية الصيانة والتطوير.

• تأمين كلمات المرور باستخدام bcrypt (اللي بيخزن الـsalt جوه الـhash)،

وبعدها استخدمت SHA256 لحل مشكلة طول الهاش في حالة الـtokens.

• نظام Authentication & Authorization باستخدام JWT (Access & Refresh Tokens).

• معالجة مشكلة الـLogout → حفظ التوكن في قاعدة البيانات بعد عمل هاش له،

عشان ما ينفعش يتستخدم تاني بعد تسجيل الخروج.

• إنشاء Scheduled Events تبعت تقارير يومية تلقائيًا بالإيميل للإداريين عن الأرباح اليومية.

• عند إنشاء أو إلغاء أي Order → النظام بيرسل التفاصيل فورًا لكل الإداريين عبر الإيميل.

• تحسين الأداء باستخدام:

In-Memory Caching, Response Caching,

Output Caching.

• تطبيق Rate Limiting بأسلوب Sliding Window لحماية الـAPI من الضغط الزائد.

• تفعيل CORS Policy لتأمين الاتصال بين السيرفر والـClient.

رابط المشروع على GitHub:

[https://lnkd.in/d5286JUx]

بطاقة العمل

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