Skip to content

maynagashev/gophermart

Repository files navigation

gophermart

Накопительная система лояльности «Гофермарт». Индивидуальный дипломный проект курса «Go-разработчик»

Быстрый старт

1. Подготовка окружения

# Клонирование репозитория
git clone https://github.com/your-username/gophermart.git
cd gophermart

# Создание .env файла из примера
cp .env.example .env

2. Запуск базы данных

# Запуск PostgreSQL через Docker compose
docker compose up -d

3. Запуск сервиса и утилит

# Сборка и запуск сервиса 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 ./...

План реализации

1. Структура проекта

  • настройка автотестов
  • docker compose для локальной разработки
  • выбор фреймворков и библиотек (echo, sqlx)
    • выбор логгера (slog)
  • линтеры и форматтеры: golangci-lint, goimports, gofmt, golines

2. Основные модели данных и миграции

  • users – пользователи
  • orders – заказы (номера)
  • transactions – транзакции (пополнения и списания)

3. Регистрация, аутентификация и авторизация пользователей

  • POST /api/user/register — регистрация пользователя
  • POST /api/user/login — аутентификация пользователя
  • Настройка приватного ключа
  • Middleware для авторизации запросов

4. Работа с заказами

  • POST /api/user/orders — загрузка пользователем номера заказа для расчёта, регистрация заказа и привязка к пользователю
  • GET /api/user/orders — получение списка загруженных пользователем номеров заказов, статусов их обработки и информации о начислениях

5. Взаимодействие с системой расчета баллов лояльности

  • Проверка заказа в системе accrual и начисление баллов (поллинг, воркер пул)

6. Баланс

  • GET /api/user/balance — получение текущего баланса счёта баллов лояльности пользователя

7. Начисление и списание баллов, получение истории списаний

  • POST /api/user/balance/withdraw — запрос на списание баллов с накопительного счёта в счёт оплаты нового заказа
  • GET /api/user/withdrawals — получение информации о выводе средств с накопительного счёта пользователем

9. Документация

  • 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

Затем добавьте полученные изменения в свой репозиторий.

About

Накопительная система лояльности «Гофермарт»

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published