Сервис для автоматического назначения ревьюеров на Pull Request'ы внутри команд. Реализованы все эндпоинты из openapi.yml, храним данные в PostgreSQL, есть миграции и контейнеризация через Docker Compose.
- Go 1.24
- Gin (HTTP API)
- PostgreSQL 15
- pgx/v5 (драйвер и пул)
- Docker + docker-compose
- golangci-lint
cmd/— точка входа http-сервера.internal/http— HTTP-обработчики по спецификации OpenAPI.internal/service— бизнес-логика и выбор ревьюеров.internal/storage— доступ к БД, транзакции, миграции.internal/db/sql— SQL-миграции.internal/domain— модели предметной области и ошибки.
- Go ≥ 1.24
- PostgreSQL 15 (локально или в docker-compose)
golangci-lint v1.64.8- Docker + docker-compose (для контейнерного запуска)
make compose-upКоманда поднимет PostgreSQL и сервис в одной сети. В .env.example уже прописана строка подключения к контейнерной базе. Для остановки:
make compose-downDATABASE_URL— строка подключения к PostgreSQL (обязательна).PORT— порт HTTP сервера (по умолчанию 8080).LOG_LEVEL—debug|info|warn|error.
go test ./...make lintWorkflow .github/workflows/ci.yml содержит два джоба:
lint— устанавливает Go 1.24, ставитgolangci-lint v1.64.8и выполняетmake lint.test— после успешного линтинга запускаетgo test ./....
Пайплайн срабатывает на push и pull_request в ветку main.
- В задании не было требований к полноценной системе аутентификации, поэтому она не была реализована.
- Файл
.envбыл добавлен в репозиторий по требованию из письма, отправленного на почту.