Skip to content

Yu-Leo/bmstu-cat-shelter-crm-back

Repository files navigation

😺 Cat Shelter CRM (backend)

license license last commit commit activity

Проект в рамках курсов "Программирование на основе Классов и Шаблонов" и "Парадигмы и Конструкции Языков Программирования" (МГТУ им. Н. Э. Баумана, ИУ5, 2 и 3 семестры)


🤝 Клиенты

🗺️ Навигация

📄 Описание проекта

CRM-система для управления внутренней деятельностью кошачьего приюта.

📌 API

OpenAPI спецификация:

Можно использовать: визуализация файла OpenAPI спецификации.

После запуска сервиса можно использовать Swagger UI: http://127.0.0.1:9000/swagger/index.html.

⚡ Запуск

  1. Инициализация БД
make init-db

1.1 Запуск локально на машине

make run

1.2 Запуск Docker-контейнере

make d-run

💻 Исходный код

Структура проекта основана на go-clean-template.

Make-команды

  • make build - сборка
  • make init-db - инициализация файла с БД (SQLite3)
  • make run - локальный запуск
  • make d-run - запуск в Docker-контейнере
  • make lint - запуск линтера
  • make swag-init - обновление Swagger-документации
  • make mocks - генерация моков для unit-тестов
  • make test - запуск unit-тестов
  • make gotools - установка вспомогательных инструментов (golangci-lint и mockery)

Конфигурация

Структура настроек описана в config/config.go.

Значения параметров задаются в config/config.yaml и в переменных окружения.

Линтер

В качестве линтера используется golangci-lint. Конфиг задается в файле ./.golangci.yml.

Линтер запускается при помощи команды:

make lint

Unit-тесты

Для генерации моков используется mockery.

Unit-тесты запускаются при помощи команды:

make test

P.S. Поскольку на данном этапе развития проекта в нём отсутсвет как таковая бизнес-логика, которую необходимо было бы покрыть unit-тестами, написание необльшого кол-ва unit-тестов необходимо для выполнения учебных задач - изучения mockery и запуска тестов в GitHub Actions.

E2E-тесты

End-to-end тесты написаны на Python. Располагаются в директории ./e2e-tests.

В пайплайне запускаются в Docker-контейнерах при помощи Docker Compose (конфиг).

CI/CD

В качестве инструмента для CI/CD используется GitHub Actions.

Инструкции описаны в файле ./.github/workflows/go.yml.

На каждый push в любой ветке запускается пайплайн, состоящий из следующих этапов:

  1. Сборка проекта
  2. Запуск линтера
  3. Запуск тестов
    • Запуск unit-тестов
    • Запуск e2e-тестов

Используемые технологии

  • Язык программирования: Go (1.20)
  • Фреймворки и библиотеки:
    • gin - HTTP веб-фреймворк
    • swag - автоматическая генерация RESTful API документации с Swagger 2.0
    • cleanenv - минималистичный конфигуратор настроек
    • logrus - логгер
  • СУБД: SQLite3
  • Инструменты
    • Docker и Docker compose
    • make
    • GitHub Actions

😄 Авторы