Skip to content

Локальная разработка

Требования

  • 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