Накопительная система лояльности «Гофермарт». Индивидуальный дипломный проект курса «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
Затем добавьте полученные изменения в свой репозиторий.