# Conflicts: # backend/package-lock.json # backend/package.json # backend/src/authMiddleware.ts # backend/src/authService.ts # backend/src/routes/auth.ts # backend/src/routes/users.ts # backend/test/app.test.ts # frontend/package-lock.json # frontend/package.json # frontend/src/api/auth.ts # frontend/src/api/index.ts # frontend/src/api/types.ts # frontend/src/api/users.ts # frontend/src/app/router.tsx # frontend/src/pages/AccountPage.tsx # frontend/src/pages/PublicProfilePage.tsx
Calendar Run
Монорепозиторий: backend (Express + PostgreSQL) и frontend (React + Vite) — календарь забегов.
Переменные окружения
Один шаблон для локальной разработки и для Docker-стека: **[.env.example](.env.example)** → скопируйте в **.env** в корне репозитория.
Там же перечислены **DB_HOST**, **DB_PORT**, **DB_NAME**, **DB_USER**, **DB_PASSWORD** (подключение бэкенда к БД), **PORT** / **API_PORT** и **CORS_ORIGIN**.
Backend — локально
cd backend && npm install- Корень:
cp .env.example .env, задайтеDB_*(и при необходимостиCORS_ORIGIN). - Postgres: из корня
docker compose up -d(см.[docker-compose.yml](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
Frontend — локально
cd frontend
cp .env.example .env
npm install
npm run dev
Фронт всегда отправляет запросы на относительный префикс **/api**. В dev это проксирует Vite на http://localhost:3001, в Docker/проде — nginx фронта проксирует на runners-calendar-backend:3000. У бэкенда CORS_ORIGIN должен совпадать с origin приложения (например http://localhost:5173).
Docker: backend + frontend рядом с Postgres
Используйте [docker-compose.stack.yml](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 runners-calendar-backend node dist/migrate.js
docker compose -f docker-compose.stack.yml exec runners-calendar-backend node dist/seed.js
Фронт в браузере обращается к API по префиксу **/api** (nginx в образе фронта проксирует на сервис runners-calendar-backend в той же сети).