# Вечерний детектив Онлайн-детективная игра: команды проходят дело из точек, дверей, ключей и улик. ## Структура workspace Корневой репозиторий `agents` хранит рабочие инструкции и документацию. Код живёт в двух отдельных репозиториях: - [`evening_detective_server/`](evening_detective_server/) — Go-бэкенд; - [`evening_detective_frontend/`](evening_detective_frontend/) — Vue/TypeScript-фронтенд; - [`email_server/`](email_server/) — старый собственный почтовый сервер, не нужен для локального запуска. У каждого из двух основных проектов своя история Git и свой remote. Не удаляйте вложенные `.git` и не смешивайте коммиты между репозиториями. ## Локальный запуск Требования: Go, Docker Compose, Node.js 20.19+ или 22.12+, npm. ### 1. Зависимости сервера ```sh cd evening_detective_server docker compose -f docker-compose-db.yml up -d cp .env.example .env make run ``` Сервис запускает: - gRPC на `http://localhost:8080`; - REST gateway и Swagger на `http://localhost:8090`. Для локального фронтенда в `evening_detective_frontend/.env` укажите: ```dotenv VITE_API_URL=http://localhost:8090 ``` ### 2. Фронтенд В другом терминале: ```sh cd evening_detective_frontend npm install cp .env.example .env npm run dev ``` Фронтенд будет доступен на `http://localhost:5173`. ### 3. Локальный пользователь ```sh cd evening_detective_server make dev-user ``` По умолчанию создаётся пользователь `dev@example.com` с паролем `dev123456`. Для изменения используйте `DEV_USER_EMAIL` и `DEV_USER_PASSWORD`. ## Проверки перед изменениями Сервер: ```sh cd evening_detective_server make test ``` Фронтенд: ```sh cd evening_detective_frontend npm run type-check npm run lint npm run lint:css ``` При изменении protobuf сначала обновляйте сгенерированный код существующими командами `make generate` на сервере и `npm run proto:gen` на фронтенде. Сгенерированные файлы руками не редактируйте. ## Сборка и публикация Из корня workspace можно собрать и опубликовать root, backend и frontend одной командой: ```sh make publish MSG="Исправить подсчёт ходов в игре" ``` Команда вызывает локальные build-команды репозиториев, создаёт коммит с указанным сообщением и выполняет `git push`. Для одной только сборки используйте: ```sh make build ``` ## Окружение и секреты Файлы `.env` предназначены только для локальных значений и не коммитятся. Начинайте настройку с `.env.example`. Секреты SMTP, JWT, S3, webhook и внешних API храните только в окружении или секрет-хранилище. Публичный адрес приложения задаётся через `APP_BASE_URL`; он используется в ссылках из писем и QR-кодах команд. ## Рабочий процесс 1. Перед изменением прочитайте корневой [`AGENTS.md`](AGENTS.md) и инструкции целевого проекта. 2. Делайте минимальное изменение в одном дочернем репозитории. 3. Запускайте релевантные проверки. 4. Коммиты и push выполняет только пользователь; агент никогда не коммитит и не отправляет изменения. Текущие подробные инструкции: - [`AGENTS.md`](AGENTS.md) — правила workspace; - [`evening_detective_frontend/AGENTS.md`](evening_detective_frontend/AGENTS.md) — правила фронтенда; - [`evening_detective_server/README.md`](evening_detective_server/README.md) — детали бэкенда.