متجر إلكتروني كامل في تطبيق واحد: API آمن بـ JWT ومعاه واجهة متجر جاهزة، وبيشتغل بأمر واحد (dotnet run). المشروع مركّز على قواعد العمل الحقيقية للمتاجر: المخزون، الطلبات، والصلاحيات.
المميزات الرئيسية:
تسجيل ودخول بـ ASP.NET Core Identity و JWT، مع دورين: Admin و Customer
كتالوج المنتجات: أقسام متداخلة (قسم رئيسي وأقسام فرعية) مع منع الحلقات الدائرية، وبحث وفلترة وترقيم صفحات
سلة مشتريات مرتبطة بكل عميل، مع التحقق من المخزون عند الإضافة والتعديل
إتمام الطلب (Checkout) داخل Transaction واحدة: يتأكد من المخزون، يحفظ سعر كل منتج وقت الشراء، يخصم الكمية، ويفضّي السلة
حالات الطلب بتتحكم فيها قواعد صارمة: pending → paid → shipped → delivered مع إمكانية الإلغاء، وإلغاء الطلب بيرجّع المنتجات للمخزون
حماية من إساءة الاستخدام: لو العميل لغى 3 طلبات في نفس اليوم، بيتمنع من الشراء 6 ساعات
حذف منطقي (Soft Delete) وسجل تدقيق (Audit) لكل البيانات: مين أنشأ، مين عدّل، ومين حذف
26 Endpoint موثقين بالكامل عن طريق Swagger
57 اختبار تكامل (Integration Tests) بـ xUnit بتغطي الصلاحيات وحالات الطلب والمخزون
التقنيات المستخدمة:
Backend: ASP.NET Core 6, C#, Entity Framework Core 6
Database: SQL Server
Frontend: HTML / CSS / JavaScript (ES Modules) بدون أي framework
Testing: xUnit, WebApplicationFactory, SQLite
Docs: Swagger / OpenAPI
الجودة المعمارية:
معمارية 3 طبقات (API ← BLL ← DAL) بدون ما طبقة تعتمد على اللي فوقها
Repository Pattern و Unit of Work لتنظيم التعامل مع قاعدة البيانات
قاعدة البيانات نفسها بتحمي البيانات: قيود على الأسعار والكميات (Check Constraints) و Indexes فريدة
ردود موحدة من الـ API (GeneralResponse<T>) بتسهّل على أي Frontend يتعامل معاه