Инфраструктура решения
Организация кода
Код организован как монорепозиторий на базе pnpm workspaces. Внутренние пакеты переиспользуются напрямую, без публикации и версионирования. Зависимости хранятся в общем хранилище pnpm, поэтому не дублируются на диске.
Воркспейсы:
packages/types,packages/contracts,packages/assessment-engineapps/web,apps/api,apps/mockapps/rankingв pnpm-workspace не входит
Сервисы и развертывание
Благодаря используемой нами контейнеризации, все сервисы запускаются через Docker Compose, и решение разворачивается одной командой на сервере (https://hire.eegov.net):
bash
docker compose --env-file infra/dev/.env -f infra/dev/docker-compose.yml up -dЗаполните .env (для примера локально есть infra/dev/.env.example).
| Сервис | Назначение | Порт |
|---|---|---|
| postgres | Данные кабинета | 5432 |
| redis | Сессии, попытка теста, кэш ФСП | 6379 |
| mailpit | Письма в dev: SMTP и ящик | 1025 / 8025 |
| ranking | Ранжирование, POST /rank | 8000 |
| mock | Реестр ФСП | 3001 |
Веб-сервер
Используем Caddy: минимальный конфиг (Caddyfile) и автоматическая выдача и продление SSL-сертификатов. Достаточно указать домен. Caddy отдаёт SPA, /api проксирует на api:3000, $FSP_DOMAIN целиком на mock:3001.