Skip to content

i-link-pro/tictac-concept

Repository files navigation

tictactoe engine — монорепозиторий концепции игрового движка

Коротко: 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

Порты по умолчанию


Установка и запуск

Требования

  • Node.js 22 (см. .nvmrc), npm 9+
  • Docker & Docker Compose

1) Установить зависимости

git clone <repository-url>
cd engine2
nvm use || true
npm i

2) Настроить окружение

cp env.example .env
# Проверьте API/WS адреса для фронтенда
# VITE_API_URL=http://localhost:3000
# VITE_WS_URL=ws://localhost:3000

3) Запустить инфраструктуру (БД, кэш, Adminer)

npm run docker:up

4) Запустить приложения (dev)

npm run dev           # фронтенд + бэкенд (watch)

Продакшн-сборка

npm run build                      # сборка всех workspace
npm run start:prod --workspace=backend

Полезные команды

npm run build:frontend             # только фронтенд
npm run build:backend              # только бэкенд
npm run docker:down                # остановить инфраструктуру

Тестирование

Скрипты (tests/scripts)

  • 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      # указать порт

E2E (Playwright)

# Требуется запущенный фронтенд на 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors