مشروع متكامل (Full-Stack) لتجارة إلكترونية يُباع فيها منتجات تقنية، مبني على Next.js (App Router) + React 19 + TypeScript + Tailwind للواجهة، وNode.js + Express 5 + PostgreSQL للخادم، مع تكامل Stripe للدفع الإلكتروني.
*المشروع في مرحلة التطوير
تم الانتهاء من الباك اند وتصميم الواجهة كاملة
تفاصيل المشروع
1. واجهة المتجر والعميل
صفحات: الرئيسية، المنتجات، الفئات والعلامات التجارية، صفحة المنتج التفصيلية (معرض صور، مراجعات وتقييمات، إضافة للمفضلة، الأصناف والمخزون)، سلة التسوق، الدفع، صفحة فاتورة قابلة للطباعة.
حساب المستخدم: تعديل المعلومات الشخصية، إدارة العناوين (إضافة/تعديل/حذف/افتراضي)، تتبع الطلبات بحالاتها، القائمة المفضلة.
صفحات المصادقة: تسجيل دخول، إنشاء حساب، استعادة كلمة المرور عبر البريد الإلكتروني.
واجهة عربية بالكامل (RTL) ومتجاوبة مع الجوال.
2. لوحة تحكم إدارية
منتجات (إضافة/تعديل/حذف)، طلبات مع تحديث حالة الطلب، عملاء، كوبونات، فئات وأقسام، مراجعات، ولوحة إحصائيات برسوم بيانية (Recharts).
3. الخادم وقاعدة البيانات
PostgreSQL بنموذج علاقات سليم: مفتاح أجنبي لكل علاقة، سياسات حذف (Cascade/Set Null) مدروسة، فهارس على كل الأعمدة المستخدمة في الاستعلامات، ومهاجرة غير هدامة لإعادة هيكلة قاعدة موجودة.
معاملة ذرية واحدة لإنشاء الطلب: تُدخل الطلب وعناصره وتُخصم المخزون وتستهلك الكوبون في خطوة واحدة؛ فإن فشل أي جزء تُرجع كل شيء (Rollback).
حجز مخزون مع إمكانية التحرير: إلغاء طلب معلّق يعيد المخزون المحجوز ويسترد استخدام الكوبون.
4. الأمان والدفع
مصادقة JWT + bcrypt، وحماية الأدوار (عميل/مدير) على المسارات المحمية، وتحقق من صحة المدخلات بـ Zod على الخادم.
Helmet لرؤوس الأمان وrate-limiting للحد من الإساءة، والأسرار (مفاتيح Stripe) تبقى على الخادم فقط ولا تُكشف أبدًا للواجهة.
دفع بالبطاقة عبر Stripe (PaymentIntent + PaymentElements): الخادم يعيد التحقق من الدفع لدى Stripe قبل اعتماد الطلب — لا يُثق بادعاء المتصفح — مع Webhook (succeeded/payment_failed) لمزامنة حالة الطلب على الخادم، وحذف السلة فقط بعد تأكيد الدفع (وليس عند إنشاء الطلب). بالإضافة إلى الدفع عند الاستلام (COD).
5. المميزات التجارية
كوبونات موثقة من جهة الخادم: تُطبّق على السلة وتُتحقق صحة كودها وعدد استخداماته على الخادم، وتُستهلك مع الطلب وتُحرر عند الإلغاء.
صفحة فاتورة لكل طلب (المنتجات، الكميات، الأسعار، الخصم، الشحن، الإجمالي، بيانات الدفع) قابلة للطباعة.
6. النشر والتوثيق
نشر الواجهة على Vercel، وقاعدة البيانات على Neon (PostgreSQL)، مع README شامل يشرح التشغيل، متغيرات البيئة، السكيما، ودفق الدفع.