Коротко: NestJS backend + React frontend, WebSocket real‑time, Redis, PostgreSQL, npm workspaces.
├── apps/
│ ├── backend/ # NestJS бэкенд: WebSocket, REST, Redis, PostgreSQL
│ └── frontend/ # React + TypeScript + Vite клиент
├── packages/
│ ├── shared/ # Общий код: FSM, типы, сообщения, утилиты
│ └── bench/ # Бенчмарки и сериализаторы (Avro/JSON/Protobuf)
├── tests/
│ ├── playwright/ # E2E тесты (скрипт запуска, конфиг)
│ ├── k6/ # Нагрузочные сценарии k6
│ └── scripts/ # баш скрипты для тестов
├── docker/ # Инфраструктура: Postgres, Redis, Adminer
├── final-docs/ # Архитектурные заметки
└── env.example # Пример переменных окружения
- Frontend: React, TypeScript, Vite, Zustand
- Backend: NestJS, Socket.IO, TypeORM, PostgreSQL, Redis, Jest
- Инфра: Docker Compose, Adminer, npm workspaces
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- WebSocket: ws://localhost:3000
- Adminer: http://localhost:8080
- PostgreSQL: 5432, Redis: 6379
- Node.js 22 (см.
.nvmrc), npm 9+ - Docker & Docker Compose
git clone <repository-url>
cd engine2
nvm use || true
npm icp env.example .env
# Проверьте API/WS адреса для фронтенда
# VITE_API_URL=http://localhost:3000
# VITE_WS_URL=ws://localhost:3000npm run docker:upnpm run dev # фронтенд + бэкенд (watch)npm run build # сборка всех workspace
npm run start:prod --workspace=backendnpm run build:frontend # только фронтенд
npm run build:backend # только бэкенд
npm run docker:down # остановить инфраструктуруrun-config-test.sh— быстрый e2e‑смок: поднимает Redis/Postgres, собирает бэкенд, стартует его и последовательно вызывает REST: создать игру → получить → присоединить игрока → сделать ход. Логи вlogs/<timestamp>/.bash tests/scripts/run-config-test.sh
test-game-flow.sh— простой сценарий полного цикла игры с проверками статусов и поля.bash tests/scripts/test-game-flow.sh
kill-backend.sh— завершает процессы бэкенда (watch/prod) и, при необходимости, процесс на порту (по умолчанию 3000).bash tests/scripts/kill-backend.sh # порт по умолчанию bash tests/scripts/kill-backend.sh 3000 # указать порт
# Требуется запущенный фронтенд на http://localhost:5173
bash tests/playwright/run-playwright-tests.sh # headless
bash tests/playwright/run-playwright-tests.sh ui # UI
bash tests/playwright/run-playwright-tests.sh headed # headed
bash tests/playwright/run-playwright-tests.sh debug # debug# k6
k6 run tests/k6/load-test.js