Backend API для приложения "Матрица Судьбы" на Golang + Gin + PostgreSQL + Redis.
- Go 1.21+
- Gin - веб-фреймворк
- PostgreSQL 15+ - основная БД
- Redis 7+ - кэш и rate limiting
- JWT - аутентификация
apps/api/
├── cmd/
│ └── server/ # Точка входа приложения
│ └── main.go
├── internal/
│ ├── config/ # Конфигурация
│ ├── database/ # PostgreSQL и Redis клиенты
│ ├── handlers/ # HTTP обработчики
│ ├── middleware/ # Middleware (auth, CORS, rate limiting)
│ ├── models/ # Модели данных
│ ├── repository/ # Слой работы с БД
│ └── services/ # Бизнес-логика
│ └── calculator/ # Сервисы расчетов
├── migrations/ # SQL миграции
├── go.mod
├── go.sum
└── .env.example
cd apps/api
go mod downloadСкопируйте .env.example в .env и настройте переменные:
cp .env.example .env# Из корня проекта
docker-compose up -d postgres redis# Подключитесь к PostgreSQL
docker exec -it arcanum_postgres psql -U arcanum_user -d arcanum_db
# Выполните миграцию
\i /docker-entrypoint-initdb.d/001_initial_schema.sqlИли через psql напрямую:
psql postgresql://arcanum_user:arcanum_password@localhost:5432/arcanum_db -f migrations/001_initial_schema.sqlgo run cmd/server/main.goСервер запустится на http://localhost:3001
GET /healthPOST /api/v1/calculate/matrix
Content-Type: application/json
{
"birthDate": "22.06.1987"
}POST /api/v1/calculate/pythagoras
Content-Type: application/json
{
"birthDate": "22.06.1987"
}POST /api/v1/calculate/compatibility
Authorization: Bearer <JWT_TOKEN>
Content-Type: application/json
{
"person1": {
"birthDate": "22.06.1987",
"name": "Артём"
},
"person2": {
"birthDate": "10.10.1995",
"name": "Рубина"
}
}# С автоматической перезагрузкой
go install github.com/cosmtrek/air@latest
air# Unit тесты
go test ./internal/services/calculator/... -v
# Все тесты
go test ./... -v
# С покрытием
go test ./... -cover# Production build
go build -o server cmd/server/main.go
# Запуск
./serverdocker build -t arcanum-api .docker run -p 3001:3001 --env-file .env arcanum-api| Переменная | Описание | По умолчанию |
|---|---|---|
APP_ENV |
Окружение (development/production) | development |
APP_PORT |
Порт сервера | 3001 |
DATABASE_URL |
PostgreSQL connection string | - |
REDIS_URL |
Redis connection string | redis://localhost:6379 |
JWT_SECRET |
Секретный ключ для JWT (мин. 32 символа) | - |
CORS_ALLOWED_ORIGINS |
Разрешенные origins для CORS | http://localhost:5173 |
- Реализовать Auth endpoints (регистрация, вход)
- Реализовать User endpoints (профиль)
- Реализовать Subscription endpoints (Stripe)
- Добавить расчет роли ребенка в роду
- Написать интеграционные тесты
- Добавить OpenAPI/Swagger документацию
- Настроить CI/CD
MIT