شغّل المتجر محليًا
شغّل حزمتك على جهازك باستخدام Docker.
لحزمة الحزمة الكاملة
قبل أن تبدأ: ثبّت Docker Desktop وافتحه، أو Docker Engine مع Compose.
اطّلع على المتطلباتنزّل قالبك
افتح صفحة «قوالبي» ونزّل ملف ZIP الخاص بحزمتك.
النتيجة المتوقعة: يظهر في مجلد التنزيلات ملف باسم مثل
e-commerce-1-main-….zip.فك الضغط وافتح المجلد
فك ضغط ملف ZIP وافتح طرفية داخل المجلد
e-commerce-1. على Windows، فك الضغط في مستكشف الملفات، ثم افتح طرفية داخل المجلد.الطرفيةunzip e-commerce-1-*.zip cd e-commerce-1النتيجة المتوقعة: يحتوي المجلد على
تواجه مشكلة؟admin-dashboardوback-endوstorefrontوdocker-compose.yml.شغّل التطبيقات
ابنِ واجهة API والمتجر ولوحة الإدارة وشغّلها. لا تحتاج إلى ضبط أي شيء مسبقًا. في التشغيل الأول تُبنى ثلاث صور وتُملأ قاعدة البيانات بالمتجر التجريبي، وهذا يستغرق بضع دقائق؛ أما مرات التشغيل اللاحقة فتستغرق ثوانيَ.
الطرفيةفيe-commerce-1docker compose up --buildالمنفذ مستخدم بالفعل؟
إذا توقف التشغيل برسالة
المنفذ مستخدم بالفعلports are not available ... address already in useفهناك برنامج آخر يستخدم 3030 أو 3031 أو 8000. إما أن توقفه، أو أن تنشئ ملفًا باسم.envداخل المجلدe-commerce-1يحدد المنفذ الذي تحتاجه، مثلADMIN_PORT=3041(وSITE_PORTللمتجر، وAPI_PORTلواجهة API). ثم شغّلdocker compose up --buildمن جديد وافتح التطبيق على منفذه الجديد.النتيجة المتوقعة: تبقى الخدمات الثلاث قيد التشغيل ويتوقف السجل عن التمرير. اترك هذه الطرفية مفتوحة.
تواجه مشكلة؟افتح المتجر
افتح localhost:3030محلي. لتسجيل الدخول كعميل تجريبي، استخدم
john.doe@example.comمع كلمة المرورpassword123. النسخة العربية على/ar.النتيجة المتوقعة: يفتح المتجر على صفحته الرئيسية مع الكتالوج التجريبي.
تواجه مشكلة؟سجّل الدخول إلى لوحة الإدارة
افتح localhost:3031محلي. النموذج معبّأ مسبقًا ببيانات المدير العام (Super Admin)، أي
admin@example.comمع كلمة المرورAdmin@123. غيّرها بعد أول تسجيل دخول.النتيجة المتوقعة: تفتح لوحة الإدارة على صفحة النظرة العامة.
تواجه مشكلة؟
جولة سريعة
هكذا يبدو المتجر التجريبي عندما يعمل كل شيء.

| الحساب | يسجّل الدخول على | البريد الإلكتروني | كلمة المرور |
|---|---|---|---|
| المدير العام (Super Admin) | لوحة الإدارة | admin@example.com | Admin@123 |
| موظف، بدور Viewer للقراءة فقط | لوحة الإدارة | john.smith@admin.com | admin123 |
| العميل | المتجر | john.doe@example.com | password123 |
توجد عشرة حسابات موظفين أخرى على @admin.com بكلمة المرور admin123، وأربعة عشر عميلًا آخر على @example.com بكلمة المرور password123. هذه حسابات تجريبية محلية فقط.
أوقف التطبيقات وأعد تشغيلها
اضغط Ctrl+C في الطرفية لإيقاف التطبيقات، أو شغّل هذا الأمر من المجلد e-commerce-1. تبقى بياناتك محفوظة في وحدة التخزين ecommerce-data.
e-commerce-1docker compose downأعد التشغيل بالأمر نفسه في الخطوة 3. من دون --build يعيد استخدام الصور التي بنيتها مسبقًا.
e-commerce-1docker compose upحافظ على بياناتك
يحذف docker compose down -v وحدة تخزين قاعدة البيانات أيضًا. في التشغيل التالي تُنشأ نسخة جديدة من المتجر التجريبي، ويضيع كل ما أنشأته.
شغّل المتجر
هذه الحزمة هي المتجر وحده. يعمل على متجر نموذجي مدمج إلى أن توجّهه إلى واجهة API الخاصة بالقالب. واجهة API حزمة منفصلة وليست ضمن هذا التنزيل.
فك الضغط وافتح المجلد
الطرفيةunzip storefront-*.zip cd storefrontالنتيجة المتوقعة: يحتوي المجلد على
تواجه مشكلة؟Dockerfileوpackage.json.ابنِ الصورة
تُضمَّن قيم
NEXT_PUBLIC_*داخل كود JavaScript الذي يحمّله المتصفح، لذلك فهي وسائط بناء. اتركها لتشغيل المتجر النموذجي؛ ولاستخدام واجهة API خاصة بك، مرّر عنوانها.الطرفيةفيstorefrontdocker build -t ecommerce-storefront .مع واجهة API خاصة بك:
تواجه مشكلة؟الطرفيةفيstorefrontdocker build -t ecommerce-storefront --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_SITE_URL=https://shop.your-domain.com .شغّله
إذا كان المنفذ
3030مشغولًا، فغيّر الرقم الموجود على يسار-p، مثل-p 3041:3030، وافتح ذلك المنفذ بدلًا منه.الطرفيةفيstorefrontdocker run -p 3030:3030 ecommerce-storefrontالنتيجة المتوقعة: يفتح localhost:3030محلي المتجر. من دون واجهة API، يظهر تنبيه «بيانات تجريبية» يوضح ذلك، وأي بريد إلكتروني وكلمة مرور يسجّلان دخولك كمتسوّق نموذجي.
تواجه مشكلة؟
شغّل لوحة الإدارة
هذه الحزمة هي لوحة الإدارة وحدها. من دون واجهة API تعمل على متجر نموذجي مدمج داخل المتصفح: يمكنك تسجيل الدخول وإنشاء المنتجات وتحريك الطلبات وتغيير الصلاحيات، وتُحفظ تغييراتك في المتصفح. واجهة API حزمة منفصلة وليست ضمن هذا التنزيل.
فك الضغط وافتح المجلد
الطرفيةunzip admin-dashboard-*.zip cd admin-dashboardالنتيجة المتوقعة: يحتوي المجلد على
تواجه مشكلة؟Dockerfileوpackage.json.ابنِ الصورة
من دون وسائط بناء تستخدم لوحة الإدارة متجرها النموذجي. لاستخدام واجهة API خاصة بك، مرّر عنوانها، وعنوان WebSocket الخاص بها (الخادم نفسه من دون
/api)، وعنوان المتجر.الطرفيةفيadmin-dashboarddocker build -t ecommerce-admin .مع واجهة API خاصة بك:
تواجه مشكلة؟الطرفيةفيadmin-dashboarddocker build -t ecommerce-admin --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_WEBSOCKET_BASE_URL=https://api.your-domain.com --build-arg NEXT_PUBLIC_STOREFRONT_URL=https://shop.your-domain.com .شغّلها وسجّل الدخول
إذا كان المنفذ
3031مشغولًا، فغيّر الرقم الموجود على يسار-p، مثل-p 3041:3031، وافتح ذلك المنفذ بدلًا منه.الطرفيةفيadmin-dashboarddocker run -p 3031:3031 ecommerce-adminالنتيجة المتوقعة: يفتح localhost:3031محلي نموذج تسجيل الدخول، معبّأً مسبقًا بـ
تواجه مشكلة؟admin@example.comوAdmin@123. على المتجر النموذجي، يسجّل دخولك كمدير عام أي بريد إلكتروني صالح مع كلمة مرور من 6 أحرف على الأقل.
شغّل واجهة API
هذه الحزمة هي واجهة API المبنية على NestJS وحدها، على ملف SQLite محفوظ في وحدة تخزين Docker. المتجر ولوحة الإدارة حزمتان منفصلتان وليستا ضمن هذا التنزيل.
فك الضغط وأنشئ ملف البيئة
يعمل
.env.exampleكما هو للتشغيل المحلي. نسخة.envهي المكان الذي تضع فيه مفاتيحك لاحقًا.تواجه مشكلة؟الطرفيةunzip back-end-*.zip cd back-end cp .env.example .envشغّلها مع المتجر التجريبي
تحصل قاعدة البيانات الجديدة على جداول فارغة ما لم تطلب المتجر التجريبي. تحتفظ وحدة التخزين بقاعدة البيانات بين مرات التشغيل. إذا كان المنفذ
8000مشغولًا، فغيّر الرقم الموجود على يسار-p، مثل-p 8010:8000، واستخدم ذلك العنوان: يجب عندها أن تشير واجهاتك الأمامية إلىhttp://localhost:8010/api.الطرفيةفيback-enddocker run -p 8000:8000 -v ecommerce-data:/data -e SEED_DEMO_DATA=true ecommerce-apiالنتيجة المتوقعة: يجيب localhost:8000/api/healthمحلي بـ
تواجه مشكلة؟{"status":"ok"}.
لا تقرأ الحاوية ملف .env إلا عندما تضيف --env-file .env إلى docker run؛ وبهذه الطريقة تصل إليها مفاتيح Stripe و R2 والذكاء الاصطناعي. من دون JWT_SECRET خاص بك، أو مع القيمة الموجودة في المثال، تولّد الحاوية سرًا وتحفظه في وحدة التخزين.
لا تتضمن الصورة نموذج إزالة الخلفية إلا إذا طلبته. لتضمينه، ابنِ الصورة بالأمر:
back-enddocker build --build-arg FETCH_BG_MODEL=true -t ecommerce-api .