8000 GitHub - RaymundoZ/FarmTrack
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

RaymundoZ/FarmTrack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FarmTrack

О чем проект

Этот проект представляет собой серверную часть системы учета продукции для небольшой фермы. Система разработана для упрощения процесса записи и контроля над собранными товарами на ферме.

Стек технологий

  • Java 17
  • Spring Web
  • Spring Data Jpa
  • Spring Security
  • Spring Validation
  • Spring Mail
  • Spring Boot
  • Postgresql
  • Swagger
  • Liquibase
  • Mapstruct
  • Maven
  • Docker

Доп задания

Были выполнены все доп задания

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

Для корректной работы приложения необходимо передать environment параметры. Для настройки Spring Mail используются следующие параметры:

  • MAIL_HOST
  • MAIL_PORT
  • MAIL_USERNAME
  • MAIL_PASSWORD
  • STARTTLS_ENABLE

Также в проекте есть бин ReportService, который нуждается в настройке. Его параметр:

  • ADMIN_EMAIL - Email адрес, на который будут приходить отчеты.

Для настройки бина JwtService необходимо указать параметр:

  • SECRET_KEY - Ключ для подписи токенов.

Кроме того, в приложении автоматически создается пользователь с правами администратора. Для этого необходимо настроить Liquibase. Его параметры:

  • LIQUIBASE_ADMIN_NAME - Имя администратора
  • LIQUIBASE_ADMIN_SURNAME - Фамилия администратора
  • LIQUIBASE_ADMIN_PATRONYMIC - Отчество администратора
  • LIQUIBASE_ADMIN_EMAIL - Email администратора
  • LIQUIBASE_ADMIN_PASSWORD - Пароль администратора

Запуск

Запустить приложение можно командой docker compose -f compose-prod.yml up, добавив перед этим .env файл с environment переменными в корень проекта.

Эндпойнты

Эндпойнты разбиты по пяти категориям:

  1. auth - Для регистрации, авторизации и прочих операций, связанных с безопасностью.
  2. grade - Для операций, связанных с оценкой работы пользователей.
  3. harvest - Для операций, связанных с нормой сбора урожая.
  4. product - Для операций, связанных с товарами.
  5. report - Для операций, связанных с отчетами работников по сбору товаров.

Примеры всех возможных эндпойнтов


  • POST /auth/register - регистрация нового пользователя.

В тело подается json вида:

{
  "email": "user@mail.ru",
  "password": "passwd",
  "name": "alex",
  "surname": "johnson",
  "patronymic": "james",
  "role": "USER"
}

  • POST /auth/login - вход в аккаунт.

В тело подается json вида:

{
  "email": "user@mail.ru",
  "password": "passwd"
}

В cookie сохраняются access_token и refresh_token с jwt токенами.


  • POST /auth/block/{userEmail} - заблокировать профиль выбранного пользователя.

  • POST /auth/unblock/{userEmail} - разблокировать профиль выбранного пользователя.

  • POST /grade - оценить работу пользователя за текущий день.

В тело подается json вида:

{
  "user": "user@mail.ru",
  "grade": 5
}

  • GET /grade - получить все оценки.

  • GET /grade/{userEmail} - получить все оценки выбранного пользователя.

  • POST /harvest - установить норму сбора урожая на определенную дату.

В тело подается json вида:

{
  "product": "milk",
  "rate": 10,
  "date": "20.03.2024"
}

  • GET /harvest - получить список всех норм сбора урожая.

  • GET /harvest/date/{date} - получить список всех норм сбора урожая по определенной дате.

  • GET /harvest/product/{product} - получить список всех норм сбора урожая по определенному продукту.

  • POST /product - создать новый товар.

В тело подается json вида:

{
  "name": "milk",
  "amount": 50,
  "measure": "LITER"
}

  • DELETE /product/{productName} - удалить товар.

  • GET /product - получить список всех товаров.

  • POST /report - создать отчет по собранному товару.

В тело подается json вида:

{
  "product": "milk",
  "amount": 4
}

  • GET /report/stat - получить общую статистику по ферме за определенные промежутки времени.

В тело подается json вида:

{
  "start_date": "20.02.2024",
  "end_date": "20.03.2024"
}

  • GET /report/stat/{userEmail} - получить статистику по работнику за определенные промежутки времени.

В тело подается json вида:

{
  "start_date": "20.02.2024",
  "end_date": "20.03.2024"
}

  • GET /swagger-ui/index.html - swagger ui

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0