شغّل لوحة التحكم من دون Docker
ثبّت كل تطبيق وشغّله باستخدام Node.js و Yarn، بطرفية مستقلة لكل تطبيق.
لحزمة واجهة + خلفية
قبل أن تبدأ: ثبّت Node.js 22.9 أو أحدث ونفّذ corepack enable مرة واحدة. لا حاجة إلى خادم قاعدة بيانات.
افتح كل طرفية في المجلد dashboard-2-full-stack. شغّل واجهة API أولًا: فلوحة التحكم تقرأ كل بياناتها منها.
| التطبيق | المجلد | العنوان |
|---|---|---|
| API | back-end | localhost:8000/ |
| لوحة التحكم | front-end | localhost:3030محلي |
شغّل واجهة API
ثبّت واضبط الإعداد
يعمل
.env.exampleكما هو في التطوير المحلي: SQLite في./database.sqlite، وواجهة API على المنفذ8000، ومسموح للوحة التحكم منhttp://localhost:3030.الطرفيةفيdashboard-2-full-stackcorepack enable cd back-end yarn install cp .env.example .envتواجه مشكلة؟أنشئ قاعدة البيانات
ينشئ
yarn seedالملفdatabase.sqliteوجداوله والبيانات النموذجية: 12 مشرفًا و5 أدوار و25 صلاحية، و15 مستخدمًا و12 محذوفًا، و15 مشروعًا و12 محذوفًا، و10 مهام، و13 إعداد تطبيق، و50 دولة. وتشغيله مرة أخرى يُبقي مشرفيك وكلمات مرورهم ومستخدميك ومشاريعك ومهامك ودولك كما هي، ويضيف ما ينقص. ويعيد إعدادات التطبيق وصلاحيات الأدوار الخمسة المدمجة إلى قيمها النموذجية، ويمنح دور Viewer لكل مشرف غيرadmin@example.comلا يملكه بعد.الطرفيةفيback-endyarn seedشغّل الخادم
يعيد
yarn devتشغيل واجهة API كلما حفظت ملفًا.الطرفيةفيback-endyarn devالنتيجة المتوقعة: يجيب فحص الحالةمحلي بـ
تواجه مشكلة؟"status":"ok"و"database":"up".
شغّل لوحة التحكم
في طرفية ثانية:
ثبّت واضبط الإعداد
يوجّه ملف
.envالمنسوخ لوحة التحكم إلى واجهة API على المنفذ8000، وإلى الخادم نفسه للتحديث الفوري للصلاحيات.الطرفيةفيdashboard-2-full-stackcd front-end yarn install cp .env.example .envشغّلها وسجّل الدخول
الطرفيةفيfront-endyarn devالنتيجة المتوقعة: يفتح localhost:3030محلي صفحة تسجيل الدخول. سجّل الدخول بالبريد
تواجه مشكلة؟admin@example.comوكلمة المرورAdmin@123.
من دون ملف .env المنسوخ، لا تبحث لوحة التحكم عن واجهة API أصلًا: بل تعمل على واجهة API التجريبية المدمجة ببيانات نموذجية محفوظة في متصفحك.
شغّل لوحة التحكم
لا حاجة إلى ملف .env: فمن دون ضبط عنوان لواجهة API، تعمل لوحة التحكم على واجهة API التجريبية المدمجة ببيانات نموذجية.
شغّلها وسجّل الدخول
الطرفيةفيdashboard-2-front-endyarn devالنتيجة المتوقعة: يفتح localhost:3030محلي صفحة تسجيل الدخول. سجّل الدخول بالبريد
تواجه مشكلة؟admin@example.comوكلمة المرورAdmin@123، فتفتح النظرة العامة مع إشعار «بيانات تجريبية».
لتوجيهها إلى واجهة API الخاصة بك، انسخ الإعدادات النموذجية بالأمر cp .env.example .env: فهي تتوقع واجهة API على http://localhost:8000/api. غيّر NEXT_PUBLIC_API_BASE_URL وNEXT_PUBLIC_WEBSOCKET_BASE_URL إذا كانت واجهتك تعمل في مكان آخر، ثم أعد تشغيل yarn dev.
بناء واجهة API للإنتاج
اضبط أولًا ملف .env لواجهة API للإنتاج: مع NODE_ENV=production لا تنشئ واجهة API أي جداول عند بدء التشغيل، وترفض البدء ما دام JWT_SECRET فارغًا أو ما زال بقيمة المثال، أو ما دام CORS_ORIGIN فارغًا.
NODE_ENV=production
JWT_SECRET=paste-the-generated-secret-here
CORS_ORIGIN=https://admin.your-domain.com
FRONTEND_URL=https://admin.your-domain.comولّد السر بالأمر node -e "console.log(require('crypto').randomBytes(48).toString('hex'))". ثم ابنها في back-end، وأنشئ الجداول مرة واحدة بالأمر yarn seed:prod، وشغّلها:
back-endyarn build
yarn seed:prod
yarn start:prodyarn seed:prod هو الأمر الوحيد الذي ينشئ الجداول، وهو يضيف أيضًا البيانات النموذجية والمشرفين النموذجيين بكلمات مرورهم المعروفة للجميع. قبل الإطلاق، سجّل الدخول وغيّر كلمات مرور المشرفين النموذجيين من الإعدادات ثم الأمان، أو احذفهم، وأبقِ JWT_SECRET الخاص بك كما سبق، قبل أن يصبح بإمكان أي شخص آخر الوصول إلى لوحة التحكم. نفّذه مرة واحدة: فالتشغيل الثاني يعيد إعدادات التطبيق وصلاحيات الأدوار المدمجة إلى قيمها النموذجية.
بناء لوحة التحكم للإنتاج
في مجلد لوحة التحكم، ابنِها مرة واحدة ثم شغّلها. تعمل على المنفذ 3030، أو على PORT من .env أو من البيئة.
yarn build
yarn startتُضمَّن قيم NEXT_PUBLIC_* في لوحة التحكم عند البناء، لذلك نفّذ yarn build مرة أخرى بعد تغيير .env.
ابدأ من جديد ببيانات نموذجية جديدة
أوقف واجهة API، ثم احذف ملف قاعدة البيانات وأعد ملأها بالبيانات في back-end. هذا يحذف كل ما أنشأته.
back-endrm -f database.sqlite* && yarn seedفي PowerShell:
back-endRemove-Item database.sqlite*; yarn seedيفرغ yarn reset كل جدول ويُبقي الجداول؛ ويحذف yarn drop كل جدول. نفّذ yarn seed بعد أي منهما.