Локальная разработка
Требования
- Go 1.25+
- Node.js 20+
- PostgreSQL 16+
- Redis 7+
- Make
Настройка окружения
Скопируйте файл конфигурации и отредактируйте под свою среду:
bash
cp .env.example .envОсновные переменные для разработки:
env
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=slozy_dev
POSTGRES_USER=slozy_user
POSTGRES_PASSWORD=slozy_pass
REDIS_HOST=localhost
REDIS_PORT=6379
DEV_MODE=true
JWT_SECRET=dev_secret_key_min_32_characters_longЗапуск базы данных
bash
# Через Docker Compose
docker compose up -d postgres redis
# Либо вручную
createdb slozy_devМиграции
Миграции выполняются автоматически при запуске сервера через golang-migrate. Для ручного запуска:
bash
# Применить все миграции
go run ./cmd/slozy-web -migrate up
# Откатить последнюю миграцию
go run ./cmd/slozy-web -migrate downМиграции находятся в директории migrations/ — 18 файлов, от 000001_organizations до 000018_query_cache.
Запуск бэкенда
bash
# Без hot-reload
go run ./cmd/slozy-web
# С Air hot-reload (автоматическая пересборка при изменениях)
airНастройки hot-reload в .air.toml — отслеживаются .go, .tpl, .yaml, .mod файлы, исключаются тесты и директория tmp/.
Запуск фронтенда
bash
cd frontend
npm install
npm run devФронтенд на Vite + React 19, стартует на http://localhost:5173, проксирует API на http://localhost:8080.
Запуск ингестора
В отдельном терминале:
bash
go run ./cmd/slozy-ingestorСервис ингестии периодически опрашивает Prometheus и сохраняет метрики SLO в БД.
Проверка работоспособности
bash
# Health check API
curl http://localhost:8080/health
# Метрики Prometheus
curl http://localhost:9090/metrics