Перейти до змісту

ESWF — Build Instructions

Інструкція зі збирання production-білдів кожного модуля та їх запуску.


Quickstart

Production-білд (з реальними доменами eswf.dev)

node build-all.js
node launcher-prod.js

Локальний білд (для тестування на localhost)

node build-local.js
node launcher-prod.js

Різниця: 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):

venv\Scripts\daphne.exe -b 127.0.0.1 -p 8000 eswf.asgi:application

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)

cd frontend\shop

# Встановити залежності
npm install

# Зібрати
npm run build

Вихід: frontend/shop/.next/

Запуск production-білду:

# Вбудований Next.js сервер (порт 5175)
npm start
# або явно:
npx next start -p 5175


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):

npm install -g eas-cli
eas login
eas build --platform android --profile production

⚠️ 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 Однаковий