Reviewed-on: #14
Calendar Run
Монорепозиторий: backend (Express + PostgreSQL) и frontend (React + Vite) — календарь забегов.
Переменные окружения
Один шаблон для локальной разработки и для Docker-стека: .env.example → скопируйте в .env в корне репозитория.
Там же перечислены DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD (подключение бэкенда к БД), PORT / API_PORT, опционально CALENDAR_RUN_MOCK_DB, CORS_ORIGIN, а для локального Vite — VITE_API_BASE_URL.
Backend — локально
cd backend && npm install- Корень:
cp .env.example .env, задайтеDB_*(и при необходимостиCORS_ORIGIN). - Postgres: из корня
docker compose up -d(см.docker-compose.yml) — в compose используются те жеDB_NAME,DB_USER,DB_PASSWORDиз.env. cd backend && npm run db:migrate && npm run seed- Dev-режим:
npm run dev - Или production:
npm run build && npm start
Без PostgreSQL (только smoke API): в .env задайте CALENDAR_RUN_MOCK_DB=1; db:migrate и seed с mock не использовать.
Frontend — локально
cd frontend
cp .env.example .env
npm install
npm run dev
Значение VITE_API_BASE_URL см. в корневом .env.example; для dev по умолчанию http://localhost:3001. У бэкенда CORS_ORIGIN должен совпадать с origin приложения (например http://localhost:5173).
Docker: backend + frontend рядом с Postgres
Используйте docker-compose.stack.yml: общая внешняя сеть с контейнером Postgres (как в вашей инфраструктуре). В корне должен быть .env (из .env.example): DB_HOST — имя сервиса/контейнера Postgres в этой сети, DB_PORT=5432, плюс остальные DB_* и CORS_ORIGIN=http://localhost:3033, если заходите на фронт с хоста на порту 3033.
docker compose -f docker-compose.stack.yml up -d --build
docker compose -f docker-compose.stack.yml exec backend node dist/migrate.js
docker compose -f docker-compose.stack.yml exec backend node dist/seed.js
Фронт в браузере обращается к API по префиксу /api (nginx в образе фронта проксирует на backend).