Накопительная система лояльности «Гофермарт». Индивидуальный дипломный проект курса «Go-разработчик»
# Клонирование репозитория
git clone https://github.com/your-username/gophermart.git
cd gophermart
# Создание .env файла из примера
cp .env.example .env# Запуск PostgreSQL через Docker compose
docker compose up -d# Сборка и запуск сервиса gophermart
make run
# Запуск accrual
make run-accrual
# Запуск линтеров
make lint
# Запуск тестов
make testВ Linux однократно:
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install golang.org/x/tools/cmd/goimports@latest
go install github.com/segmentio/golines@latest
# Установка pre-commit
sudo apt update
sudo apt install pipx
pipx install pre-commit# Исправление импортов
goimports -w .
# Исправление форматирования
gofmt -w .
# Исправление длины строк
golines -w -m 120 --shorten-comments .
# Запуск линтера
golangci-lint run ./...- настройка автотестов
- docker compose для локальной разработки
- выбор фреймворков и библиотек (echo, sqlx)
- выбор логгера (slog)
- линтеры и форматтеры:
golangci-lint,goimports,gofmt,golines
-
users– пользователи -
orders– заказы (номера) -
transactions– транзакции (пополнения и списания)
-
POST /api/user/register— регистрация пользователя -
POST /api/user/login— аутентификация пользователя - Настройка приватного ключа
- Middleware для авторизации запросов
-
POST /api/user/orders— загрузка пользователем номера заказа для расчёта, регистрация заказа и привязка к пользователю -
GET /api/user/orders— получение списка загруженных пользователем номеров заказов, статусов их обработки и информации о начислениях
- Проверка заказа в системе accrual и начисление баллов (поллинг, воркер пул)
-
GET /api/user/balance— получение текущего баланса счёта баллов лояльности пользователя
-
POST /api/user/balance/withdraw— запрос на списание баллов с накопительного счёта в счёт оплаты нового заказа -
GET /api/user/withdrawals— получение информации о выводе средств с накопительного счёта пользователем
-
README.mdс описанием проекта и планом реализации - API документация (swagger)
Чтобы иметь возможность получать обновления автотестов и других частей шаблона, выполните команду:
git remote add -m master template https://github.com/yandex-praktikum/go-musthave-diploma-tpl.gitДля обновления кода автотестов выполните команду:
git fetch template && git checkout template/master .githubЗатем добавьте полученные изменения в свой репозиторий.