العودة إلى المشاريع

دراسة مشروع مميز

قالب متجر ملابس إلكتروني

بناء أساس متجر إلكتروني Full-stack قريب من الواقع

بدأ هذا المشروع كتجربة تعلم عملية لبناء مشروع Full-stack، ثم تطور إلى قالب متجر إلكتروني قابل لإعادة الاستخدام لمتاجر الملابس الصغيرة. يركز على تدفقات متجر واقعية، واجهة ثنائية اللغة، لوحة إدارة، تحقق على السيرفر، مخزون حسب المتغيرات، وتجهيز للنشر.

عرض المشروع

نظرة سريعة على واجهة المتجر وتجربة الاستخدام المتجاوبة

هذه الفيديوهات المحلية تعرض المشروع باستخدام بيانات تجريبية فقط. عرض سطح المكتب هو المشهد الرئيسي، بينما يوضح عرض الهاتف كيف تتكيف تجربة المتجر نفسها مع الشاشات الصغيرة.

عرض سطح المكتب — مساحة أوسع لتصفح المنتجات، الطلب، وتدفقات لوحة الإدارة.
عرض الهاتف — نفس تدفق المنتجات داخل تصميم متجاوب ومناسب للشاشة الصغيرة.

نظرة عامة

المشروع عبارة عن قالب متجر إلكتروني Full-stack موجه لمتاجر الملابس الصغيرة. يحتوي على واجهة متجر عامة، كتالوج منتجات، سلة وطلب، طلبات العملاء، لوحة إدارة، تسجيل دخول، التعامل مع الصور، إعدادات البريد، واجهة ثنائية اللغة، وتجهيز للنشر.

تمت صيانة المشروع كقالب مستقل لمتاجر الملابس بعد انطلاقه من starter متجر إلكتروني موجود ومقوى مسبقاً. الهدف لم يكن بناء منصة SaaS كبيرة متعددة العملاء، بل قالباً آمناً وقابلاً لإعادة الاستخدام بحيث يكون لكل متجر مستقبلي مستودع، قاعدة بيانات، متغيرات بيئة، هوية بصرية، منتجات، ونشر مستقل.

الأدق وصفه كقالب جاهز للعرض وقريب من جاهزية العملاء، لكنه ما زال يحتاج مراجعة staging وproduction hardening قبل أي إطلاق حقيقي لعميل.

المشكلة

متاجر الملابس الصغيرة تحتاج أكثر من مجرد عرض منتجات. تحتاج إدارة منتجات عملية، مقاسات وألوان، مخزون دقيق، تحقق عند الطلب، سجلات طلبات، تفاصيل توصيل، وتجربة إدارة واضحة.

وللمتاجر العربية/الإنجليزية، الواجهة تحتاج صياغة ثنائية اللغة بشكل طبيعي مع دعم RTL/LTR، وليس ترجمة حرفية فقط. كذلك يجب أن يبقى النظام آمناً مع نمو الكتالوج، لذلك لا يجب تحميل كل المنتجات وتصفيتها داخل المتصفح.

الحل

بنيت قالب متجر ملابس قابل لإعادة الاستخدام يحتوي على واجهة متجر عامة، تدفقات عميل/أدمن محمية، إدارة منتجات وتصنيفات، متغيرات ملابس، سلة وطلب، snapshots للطلبات، رفع صور، سلوك بريد إلكتروني، وتجهيزات نشر.

واجهة المنتجات تستخدم البحث والتصنيف وLoad more من السيرفر مع حدود آمنة. يوجد اختصار واتساب قابل للإعداد للمساعدة، لكن الطلبات تبقى من خلال checkout الموقع حتى لا يتم تجاوز التحقق، حجز المخزون، ونسخ بيانات الطلب.

جانب الإدارة يركز على إدارة آمنة: فلاتر وتصفح من السيرفر، تعديل المنتجات والمتغيرات، إدارة التصنيفات مع حذف آمن، بطاقات الطلبات، تحديث الحالة والدفع، ملاحظات داخلية، وتفاصيل طلبات مناسبة للموبايل.

أهم الميزات

المشروع يجمع بين ميزات متجر تظهر للعميل وأدوات إدارة وقرارات تقنية تراعي بيئة الإنتاج.

  • واجهة متجر عامة تشمل عرض المنتجات، تفاصيل المنتج، التصنيفات، السلة، الطلب، وطلبات العميل.
  • بحث وتصنيف وتحميل المزيد من السيرفر مع حدود آمنة حتى يبقى التصفح مناسباً مع نمو الكتالوج.
  • متغيرات ملابس للمقاس واللون مع تتبع المخزون على مستوى المتغير.
  • حجز المخزون أثناء الطلب مع حماية من خصم المخزون مرتين عند تأكيد الأدمن.
  • اختيار منطقة التوصيل مع حفظ نسخة من سعر التوصيل حتى تبقى الطلبات القديمة مفهومة بعد تغيير إعدادات التوصيل.
  • لوحة إدارة للمنتجات، التصنيفات، الطلبات، المتغيرات، المخزون، حالة الطلب، حالة الدفع، والملاحظات الداخلية.
  • واجهة عربية/إنجليزية مع دعم RTL/LTR وتحسينات في الصياغة لتناسب السوق المحلي.
  • اختصار واتساب للدعم قابل للإعداد وتنبيهات بريد اختيارية لصاحب المتجر عند وصول طلب جديد.
  • تجهيز للنشر باستخدام خدمات مثل Render وNeon وCloudinary وUpstash Redis وإعدادات البريد.

البنية والقرارات التقنية

التطبيق يستخدم منطقاً على السيرفر للعمليات المهمة مثل توفر المنتج، الأسعار، الخصومات، تحقق السلة، فحص المخزون، الطلب، وإنشاء الطلبات. هذا يمنع الاعتماد على قيم يمكن تغييرها من المتصفح.

بالنسبة لمنتجات الملابس، اتجهت إلى نموذج يعتمد على المتغيرات أولاً. المقاس واللون يتم التعامل معهما كمتغيرات حقيقية للمنتج، وبيانات السلة/الطلب تشير للمتغير المختار بدلاً من اعتبارها مجرد labels في الواجهة.

عناصر الطلب تحفظ نسخة من تفاصيل الشراء المهمة، وتفاصيل التوصيل تحفظ منطقة وسعر التوصيل المختارين. هذا يبقي الطلبات التاريخية واضحة حتى لو عدل الأدمن لاحقاً إعدادات المنتج أو المتغيرات أو التوصيل.

تنبيه صاحب المتجر بالبريد مصمم كعملية best-effort وخارج transaction الطلب، لذلك مشكلة مزود البريد لا تلغي طلباً صحيحاً بعد حجز المخزون.

الأمان والاعتمادية

الأمان كان جزءاً من نطاق المشروع منذ البداية. عملت على تحقق متغيرات البيئة، حماية تدفقات الأدمن/العميل، التحقق على السيرفر، تحديد المعدل، التعامل الآمن مع الجلسات، security headers، والانتباه لعدم كشف الأسرار.

مسارات التعديل المحمية تستخدم فحوصات من نوع CSRF/same-origin حيث تم تنفيذها، والـ APIs الحساسة تم تقويتها بحيث يتم التعامل بحذر مع إدخال العميل، route params، query params، الصلاحيات، والبيانات المرجعة.

تدفق الطلب مصمم بحيث يتحكم السيرفر بالأسعار، المخزون، المجموع، والتوفر. الدفع الإلكتروني خارج النطاق حالياً بشكل مقصود لتجنب إضافة مخاطر خاصة بالدفع قبل تثبيت أساس المتجر.

أخطاء الـ API غير المتوقعة يمكن تسجيلها باستخدام معرفات خطأ آمنة قابلة للبحث، بينما تمنع route error boundaries عرض أخطاء تقنية خام للعملاء أو الأدمن.

الاختبار والجودة

المشروع يستخدم فحوصات جودة مثل ESLint وTypeScript type checking وفحص البناء للإنتاج وVitest وReact Testing Library وPlaywright end-to-end tests واختبار يدوي للتدفقات المهمة للعميل والأدمن.

تغطية الاختبارات تركز على سلوكيات متجر مهمة مثل الصفحات العامة، تسجيل الدخول، السلة، الطلبات، عرض المنتجات، إظهار/إخفاء المخزون، حماية الأدمن، وفحوصات الفلاتر في لوحة الإدارة.

تعلمت أن الاختبارات تحتاج صيانة أيضاً. نصوص الواجهة، بيانات الديمو، روابط المنتجات، والlabels قد تتغير، لذلك يجب مراجعة locators وبيانات الاختبار مع تطور التطبيق.

التعلم وأسلوب العمل بمساعدة الذكاء الاصطناعي

بدأ هذا المشروع كمشروع تعلم عملي Full-stack. كان لدي أساس في مفاهيم الواجهة والباك إند من الجامعة والكورسات، لكنني لم أكن واثقاً بعد من الطريقة الصحيحة لتنظيم وبناء تطبيق قريب من أسلوب الإنتاج من البداية للنهاية.

استخدمت الذكاء الاصطناعي كمساعد للتعلم، التخطيط، التصحيح، ومراجعة الكود. في البداية ساعدني على فهم مفاهيم غير مألوفة ومقارنة طرق التنفيذ. ومع الوقت علمني المشروع كيف أستخدم أدوات الذكاء الاصطناعي بفعالية أكبر: تقسيم العمل إلى checkpoints صغيرة، كتابة prompts أوضح، مراجعة الاقتراحات بعين نقدية، وفصل قرارات التصميم، الباك إند، الأمان، الاختبار، والنشر بدلاً من التعامل مع كل شيء كمهمة واحدة كبيرة.

الجزء الأهم في هذا الأسلوب أنني بقيت مسؤولاً عن فهم الكود، تطبيق التغييرات، اختبار السلوك، مراجعة التنازلات، وتحديد ما يجب إضافته أو تأجيله. هذا ساعدني أن أصبح أسرع وأكثر تنظيماً بدون التعامل مع الذكاء الاصطناعي كبديل عن فهم التطوير الحقيقي.

التحديات والدروس المستفادة

أكبر الدروس جاءت من الأجزاء التي بدت بسيطة في البداية: نمذجة المخزون، ثبات عملية الطلب، إعدادات تسجيل الدخول، إعدادات النشر، الصياغة ثنائية اللغة، سهولة استخدام لوحة الإدارة، والحفاظ على نطاق آمن.

تعلمت أن المشروع الحقيقي لا يتعلق فقط بجعل الميزات تعمل. يحتاج أيضاً إلى نمذجة بيانات جيدة، منطق آمن على السيرفر، تدفقات واضحة للمستخدم، إعدادات قابلة للصيانة، اختبار، إتاحة، ووعي بالنشر وقرارات حذرة حول ما لا يجب بناؤه الآن.

تحسينات مستقبلية

التحسينات المستقبلية يمكن أن تشمل مراجعة production readiness/security الأوسع، مراقبة ونسخ احتياطي أقوى، تغطية Playwright أوسع، إضافة صور وشرح للديمو، ودعم الدفع الإلكتروني فقط عندما يكون أساس المتجر مستقراً بما يكفي لهذا النطاق.

الكاش وتحسين الأداء يجب أن يأتي بعد قياس استخدام حقيقي أو smoke testing آمن يثبت الحاجة، بدلاً من إضافة تعقيد قبل استقرار قواعد العمل الأساسية.

ميزات مثل POS وSMS والكوبونات وتكاملات المحاسبة وشركات التوصيل واستيراد CSV وPWA يجب أن تبقى خارج النطاق إلى أن يكون هناك احتياج واضح من عميل وخطة تنفيذ آمنة.