LoyalT - это платформа, предназначенная для создания и управления программами лояльности. Этот бэкенд-сервис предоставляет надежный API для работы с операциями программ лояльности.
- Структура бэкенда
- Технологический стек
- Схемы баз данных
- Конфигурация
- Настройка окружения разработки
- Документация API
- Тестирование
- Логирование
- Безопасность
- CI/CD
- Лицензия
.
├── cmd/ # Точки входа в приложение
│ └── main.go # Основная точка входа в приложение
├── internal/ # Внутренний код приложения
│ ├── adapters/ # Внешние слои и реализации
│ │ ├── app/ # Инициализация и настройка приложения
│ │ ├── config/ # Управление конфигурацией
│ │ ├── controller/ # HTTP обработчики и API эндпоинты
│ │ └── repository/ # Реализации хранения данных
│ └── domain/ # Бизнес-логика и основные сущности
├── pkg/ # Публичные библиотеки, которые могут использоваться внешними приложениями
├── docs/ # Файлы документации openapi
├── ssl/ # SSL сертификаты
└── logs/ # Логи приложения
-
Доменный слой (
internal/domain/
)- Содержит бизнес-логику и сущности
- Определяет интерфейсы для внешних зависимостей
-
Слой адаптеров (
internal/adapters/
)controller/
: HTTP обработчики и API эндпоинтыrepository/
: Реализации баз данныхapp/
: Начальная загрузка и конфигурация приложенияconfig/
: Управление конфигурацией
- Язык: Go
- Базы данных:
- Postgres - основная база данных
- ClickHouse - для статистики и аналитики
- Инфраструктура:
- Docker - контейнеризация
- Docker Compose - локальная разработка и развертывание
- Watchtower - автоматическое обновление контейнеров
- Документация: Swagger/OpenAPI
Приложение может быть настроено с помощью:
- Переменных окружения (файл
.env
) - Конфигурационного файла (
config.yaml
) - Флагов командной строки
- Go 1.23.5
- Docker и Docker Compose
- Клонировать репозиторий
- Скопировать
.env.example
в.env
и настроить значения - Запустить окружение разработки:
docker-compose -f dev-compose.yml up
Приложение может быть развернуто с помощью Docker Compose:
docker-compose -f compose.yml up -d
Документация API доступна по адресу /docs/index.html при запущенном приложении. API следует принципам REST и использует HTTPS для безопасной коммуникации.
Базовый URL: /api/v1
Проект включает различные типы тестов:
- Модульные тесты
- Интеграционные тесты
Запуск тестов:
go test -v ./...
Команда для оценки покрытия тестами:
go test ./internal/domain/... ./internal/adapters/controller/api/... -coverprofile=coverage.out
go tool cover -func=coverage.out | grep "^total:\|%"
total: (statements) 52.3%
Приложение использует структурированное логирование с хранением файлов логов в директории logs/
.
- HTTPS/TLS шифрование (сертификаты в директории
ssl/
) - Валидация входных данных
- Ограничение частоты запросов
- Безопасные заголовки
- Защита куки
Проект использует GitLab CI/CD для автоматизации процессов сборки и развертывания.
-
Сборка и публикация Docker-образа:
- Автоматическая сборка Docker-образа при изменениях в основной ветке (
main
) - Публикация образа в GitLab Container Registry
- Использование Docker-in-Docker (DinD) для процесса сборки
- Кэширование слоев Docker для ускорения сборки
- Автоматическая сборка Docker-образа при изменениях в основной ветке (
-
Автоматическое развертывание:
- Watchtower отслеживает обновления образов в registry
- При появлении нового образа автоматически производится обновление контейнера
- Обеспечивает zero-downtime deployment
- Автоматический запуск при коммитах в ветку
main
- Игнорирование изменений в конфигурационных файлах (
.env
,compose.yml
, etc.) - Запуск только при изменении кода проекта
- При пуше в
main
запускается сборка нового Docker-образа - Собранный образ публикуется в GitLab Container Registry
- Watchtower, запущенный на production-сервере, обнаруживает новый образ
- Происходит автоматическое обновление контейнера с приложением
Конфигурация CI/CD находится в файле .gitlab-ci.yml.
Все права на данное программное обеспечение защищены. Copyright 2025 АО «ТБанк» и авторы проекта.
Использование, копирование, модификация и распространение данного программного обеспечения возможно только с письменного разрешения АО «ТБанк».
Подробная информация о лицензии находится в файле LICENSE.