ESWF — Build Instructions¶
Інструкція зі збирання production-білдів кожного модуля та їх запуску.
Quickstart¶
Production-білд (з реальними доменами eswf.dev)¶
Локальний білд (для тестування на localhost)¶
Різниця:
build-local.jsпідставляєlocalhost-URLs замістьhttps://*.eswf.dev. Тимчасово створює.env.localперед білдом і видаляє його після. Для Vite (News, DOP) білдить у--mode development.
Порівняння скриптів¶
| Скрипт | URLs в білді | Для чого |
|---|---|---|
build-all.js |
https://*.eswf.dev |
Деплой на сервер |
build-local.js |
http://localhost:* |
Локальне тестування |
Backend (Django)¶
Django не потребує компіляції, але для production треба зібрати статику.
cd backend
# Активувати venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/macOS
# Зібрати статичні файли (admin, swagger UI тощо)
python manage.py collectstatic --noinput --settings=eswf.settings.development
# Застосувати міграції (якщо є нові)
python manage.py migrate --settings=eswf.settings.development
Запуск (dev-режим, порт 8000):
Production-варіант (з PostgreSQL та production-налаштуваннями):
# Встановити env-змінні перед запуском
set DJANGO_SETTINGS_MODULE=eswf.settings.production
set DB_NAME=eswf
set DB_USER=eswf
set DB_PASSWORD=secret
set ALLOWED_HOSTS=yourdomain.com
venv\Scripts\daphne.exe -b 0.0.0.0 -p 8000 eswf.asgi:application
Вихід: немає, сервер запускається напряму.
Portal (Next.js 15 — static export)¶
cd frontend\portal
# Встановити залежності (якщо ще не встановлено)
npm install
# Зібрати
npm run build
Вихід: frontend/portal/out/ — статичні HTML/CSS/JS файли.
Запуск production-білду:
# Варіант 1 — npx serve (автоматично завантажується)
npx serve out --listen 3000 --single
# Варіант 2 — глобально встановлений serve
serve out --listen 3000 --single
--single= SPA-режим: для будь-якого не знайденого шляху повертаєindex.html⚠️
next startне працює зoutput: "export"— тільки статичний сервер.
News (Vite + React 19 + React Router 7)¶
cd frontend\news
# Встановити залежності
npm install
# Зібрати (TypeScript-перевірка + Vite build)
npm run build
Вихід: frontend/news/dist/
Запуск production-білду:
# vite preview: serve dist/ на порту 5174 з проксуванням /api → :8000
npx vite preview
# або
npm run preview
Proxy
/api → http://localhost:8000задано вvite.config.ts→ секціяpreview.
DOP (Vite + React 19 + Mantine 8)¶
cd frontend\erp
# Встановити залежності
npm install
# Зібрати (TypeScript-перевірка + Vite build)
npm run build
Вихід: frontend/erp/dist/
Запуск production-білду:
# vite preview: serve dist/ на порту 5173 з проксуванням /api → :8000
npx vite preview
# або
npm run preview
Proxy
/api → http://localhost:8000та/ws → ws://localhost:8000задано вvite.config.ts→ секціяpreview.
Shop (Next.js 15 — SSR)¶
Вихід: frontend/shop/.next/
Запуск production-білду:
Mobile (React Native / Expo)¶
Mobile-додаток збирається через EAS Build (Expo Application Services) — не через npm run build.
cd mobile
# Встановити залежності
npm install
# Локальний запуск (Expo Metro bundler — для тестування)
npx expo start
# Prebuild (генерує native Android/iOS проекти)
npx expo prebuild
# Запуск на Android емуляторі
npx expo run:android
# Запуск на iOS симуляторі (тільки macOS)
npx expo run:ios
Production APK/AAB (через EAS):
⚠️ WatermelonDB потребує
expo prebuildабо EAS Build. Expo Go не підтримує WatermelonDB JSI.
Таблиця виходів білдів¶
| Модуль | Команда | Артефакт | Сервер для запуску |
|---|---|---|---|
| Backend | — | (без білду) | daphne, порт 8000 |
| Portal | npm run build |
out/ |
npx serve out --listen 3000 --single |
| News | npm run build |
dist/ |
npx vite preview (порт 5174) |
| DOP | npm run build |
dist/ |
npx vite preview (порт 5173) |
| Shop | npm run build |
.next/ |
npm start (порт 5175) |
| Mobile | EAS Build | .apk / .aab |
Встановлення на пристрій |
Запуск всіх production-сервісів¶
# Крок 1 — зібрати всі фронтенди
node build-all.js
# Крок 2 — запустити всі сервіси з білдів
node launcher-prod.js
launcher-prod.js автоматично перевіряє наявність артефактів і попереджає, якщо якийсь білд відсутній.
Порти¶
| Сервіс | Dev-порт | Prod-порт | Примітка |
|---|---|---|---|
| Backend | 8000 | 8000 | Однаковий |
| Portal | 3000 | 3000 | Однаковий |
| News | 5174 | 5174 | Однаковий |
| DOP | 5173 | 5173 | Однаковий |
| Shop | 5175 | 5175 | Однаковий |