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

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