انتقل إلى المقال
Aniq-UI

Food Studioشغّل المطعم محليًا

شغّل المطعم محليًا

ثبّت كل تطبيق وشغّله باستخدام Node.js و Yarn، بطرفية مستقلة لكل تطبيق.

لحزمة الحزمة الكاملة

قبل أن تبدأ: ثبّت Node.js 24 أو أحدث وشغّل corepack enable مرة واحدة. لا تحتاج إلى خادم قاعدة بيانات.

اطّلع على المتطلبات

افتح كل طرفية في المكان الذي تتوقعه الأوامر أدناه: داخل food-studio-full-stack للحزمة الكاملة، أو بجوار مجلد التطبيق لحزمة التطبيق الواحد.

التطبيقالمجلدالعنوان
APIback-endlocalhost:8000محلي
موقع الطلباتstorefrontlocalhost:3030محلي
لوحة تحكم الفريقadmin-dashboardlocalhost:3031محلي

شغّل واجهة API أولًا: تقرأ الواجهتان الأماميتان كل بياناتهما منها.

شغّل واجهة API

  1. ثبّت واضبط الإعداد

    يعمل .env.example كما هو للتطوير المحلي: SQLite على المنفذ 8000.

    الطرفية
    corepack enable
    cd back-end
    yarn install
    cp .env.example .env
    تواجه مشكلة؟
  2. أنشئ قاعدة البيانات

    ينشئ yarn seed الملف database.sqlite وجداوله والمطعم التجريبي: ثماني فئات، و64 طبقًا مع صورها، والكومبو، وأربعة مطابخ، والفريق، وستة أسابيع من الطلبات والتقييمات ونقاط المكافآت. تشغيله مرة أخرى يضيف ما هو ناقص فقط.

    الطرفيةفي back-end
    yarn seed
  3. شغّل الخادم

    الطرفيةفي back-end
    yarn dev

    النتيجة المتوقعة: يجيب localhost:8000/api/healthمحلي بـ {"success":true,"data":{"status":"ok","database":"up"},"message":""}.

    تواجه مشكلة؟

شغّل واجهة API

  1. ثبّت واضبط الإعداد

    يعمل .env.example كما هو للتطوير المحلي: SQLite على المنفذ 8000.

    الطرفية
    corepack enable
    cd food-studio-backend
    yarn install
    cp .env.example .env
    تواجه مشكلة؟
  2. أنشئ قاعدة البيانات

    ينشئ yarn seed الملف database.sqlite وجداوله والمطعم التجريبي: ثماني فئات، و64 طبقًا مع صورها، والكومبو، وأربعة مطابخ، والفريق، وستة أسابيع من الطلبات والتقييمات ونقاط المكافآت. تشغيله مرة أخرى يضيف ما هو ناقص فقط.

    الطرفيةفي food-studio-backend
    yarn seed
  3. شغّل الخادم

    الطرفيةفي food-studio-backend
    yarn dev

    النتيجة المتوقعة: يجيب localhost:8000/api/healthمحلي بـ {"success":true,"data":{"status":"ok","database":"up"},"message":""}.

    تواجه مشكلة؟

شغّل موقع الطلبات

في طرفية ثانية:

  1. ثبّت واضبط الإعداد

    يوجّه ملف .env المنسوخ الموقعَ إلى واجهة API على المنفذ 8000.

    الطرفية
    cd storefront
    yarn install
    cp .env.example .env
  2. شغّله

    الطرفيةفي storefront
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3030محلي الموقع بالإنجليزية مع القائمة التجريبية؛ والنسخة العربية على /ar.

    تواجه مشكلة؟

شغّل موقع الطلبات

واجهة API ليست جزءًا من هذه الحزمة. شغّلها أولًا؛ يتوقعها ملف .env المنسوخ على http://localhost:8000/api.

  1. ثبّت واضبط الإعداد

    إذا كانت واجهة API تعمل في مكان آخر، اضبط NEXT_PUBLIC_API_BASE_URL في .env على عنوانها، مع /api.

    الطرفية
    corepack enable
    cd food-studio-website
    yarn install
    cp .env.example .env
    تواجه مشكلة؟
  2. شغّله

    الطرفيةفي food-studio-website
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3030محلي الموقع مع القائمة القادمة من واجهة API الخاصة بك؛ والنسخة العربية على /ar.

    تواجه مشكلة؟

شغّل لوحة تحكم الفريق

في طرفية ثالثة:

  1. ثبّت واضبط الإعداد

    يوجّه ملف .env المنسوخ لوحة التحكم إلى واجهة API وإشعاراتها المباشرة على المنفذ 8000.

    الطرفية
    cd admin-dashboard
    yarn install
    cp .env.example .env
  2. شغّلها وسجّل الدخول

    الطرفيةفي admin-dashboard
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3031محلي نموذج تسجيل الدخول. سجّل الدخول بـ owner@foodstudio.example وكلمة المرور FoodDemo2026!.

    تواجه مشكلة؟

شغّل لوحة تحكم الفريق

واجهة API ليست جزءًا من هذه الحزمة. شغّلها أولًا؛ يتوقعها ملف .env المنسوخ على http://localhost:8000/api.

  1. ثبّت واضبط الإعداد

    إذا كانت واجهة API تعمل في مكان آخر، اضبط NEXT_PUBLIC_API_BASE_URL (مع /api) وNEXT_PUBLIC_WEBSOCKET_BASE_URL (من دونه) في .env على عنوانها.

    الطرفية
    corepack enable
    cd food-studio-staff-dashboard
    yarn install
    cp .env.example .env
    تواجه مشكلة؟
  2. شغّلها وسجّل الدخول

    الطرفيةفي food-studio-staff-dashboard
    yarn dev

    النتيجة المتوقعة: يفتح localhost:3031محلي نموذج تسجيل الدخول. سجّل الدخول بحساب المالك owner@foodstudio.example وكلمة المرور FoodDemo2026!، وهو حساب تقبله واجهة API بعد تعبئة بياناتها.

    تواجه مشكلة؟

بناء الإنتاج

المجلدات نفسها، تُبنى مرة واحدة ثم تُشغَّل. اضبط أولًا ملف .env الخاص بواجهة API للإنتاج: مع NODE_ENV=production لا تنشئ واجهة API أي جداول عند بدء التشغيل، وترفض أن تبدأ ما دام JWT_SECRET فارغًا أو بقيمة المثال، أو ما دام CORS_ORIGIN فارغًا.

ملف .env الخاص بواجهة API
NODE_ENV=production
JWT_SECRET=paste-the-generated-secret-here
CORS_ORIGIN=http://localhost:3030,http://localhost:3031
FRONTEND_URL=http://localhost:3031
STOREFRONT_URL=http://localhost:3030

ولّد السر بالأمر node -e "console.log(require('crypto').randomBytes(48).toString('hex'))". ثم، داخل مجلد واجهة API، ابنِها، وأنشئ جداولها مرة واحدة، وشغّلها. يضيف yarn seed:prod المطعم التجريبي وحساباته؛ أما yarn db:sync:prod بدلًا منه فينشئ جداول فارغة من دون حسابات.

الطرفية
yarn build
yarn seed:prod
yarn start:prod

بناء الإنتاج للواجهات الأمامية

في مجلد كل واجهة أمامية، ابنِ مرة واحدة ثم شغّل. يعمل الموقع على 3030 ولوحة التحكم على 3031.

الطرفية
yarn build
yarn start

تُضمِّن الواجهات الأمامية ملف .env الخاص بها وقت البناء، لذلك شغّل yarn build مجددًا بعد تغييره. قبل النشر في أي مكان عام، اقرأ قائمة التحقق الخاصة بالإطلاق.

ابدأ من جديد ببيانات تجريبية جديدة

أوقف واجهة API، ثم احذف ملف قاعدة البيانات واملأه بالبيانات مرة أخرى، داخل مجلد واجهة API. هذا يحذف كل ما أنشأته.

الطرفية
rm -f database.sqlite* && yarn seed

في PowerShell:

الطرفية
Remove-Item database.sqlite*; yarn seed

التالي

هل كان هذا مفيدًا؟

تمت مراجعته على إصدار 2026-10-08-3

توقفت عند خطوة؟

ابحث عن الحل قبل أن تبدأ من جديد.

حل المشكلات

تفضيلات ملفات تعريف الارتباط

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