Skip to content

vershinink/referral-system

Repository files navigation

RESTful API сервис для взаимодействия с реферальной системой.


Реализовано:

  • Регистрация и аутентификация пользователей с помощью JWT токенов.
  • Аутентифицированный пользователь может создать свой реферальный код, получить свой код и удалить код, если он не был использован для регистрации. Использованные коды продолжают храниться в БД. Данные пользователя для создания, получения и удаления кодов получаются из payload секции JWT токена.
  • Получение валидного реферального кода по электронной почте пользователя.
  • Регистрация пользователей в качестве рефералов по неиспользованным и неистекшим кодам.
  • Получение списка рефералов по идентификатору реферера.
  • Код проекта разделен на три слоя: транспортный, сервисный и слой работы с БД.
  • Настройки сервиса вынесены в конфиг файл. Логирование через пакет slog стандартной библиотеки.
  • Основной код покрыт тестами. Отдельные компоненты системы тестируются с использованием моков.
  • Завершение работы через graceful shutdown.
  • Составлена документация в Swagger.
  • Сборка и запуск сервиса в Docker контейнерах через docker compose.

Стек: Go, PostgreSQL, Docker, Swagger


Инструкция по запуску

  1. Установить Docker, если не установлен

  2. Склонировать проект командой

    git clone [email protected]:vershinink/referral-system.git
    
  3. В корневой папке проекта выполнить команду

    sudo docker compose --env-file creds/.env.creds up -d
    
  4. Сервер слушает по адресу http://localhost:8080

    Swagger документация доступна по адресу http://localhost:8081

  5. Для остановки сервиса выполните команду

    sudo docker compose --env-file creds/.env.creds down
    

Тестирование

Для запуска тестов необходимо отдельно запустить контейнер с БД PostgreSQL. Это можно сделать комиандой

sudo docker compose -f docker/postgresql.yaml up -d

БД будет содержать отдельную базу tests для тестирования методов работы с базой данных. Для запуска самих тестов нужно перейти в каталог internal и там выполнить команду

go test ./...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published