Skip to content

Eon is a simple time management platform that allows users to easily control their time and plan schedule.

Notifications You must be signed in to change notification settings

AidarKhaibulov/Eon-Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Описание серверной части

Сервис для расписаний и задач предоставляет пользователю возможность организовывать свое расписание и управлять задачами. Основные функциональные возможности этого сервиса:

  • Регистрация и аутентификация пользователей: пользователи могут создать учетную запись и войти в систему для доступа к своему расписанию и задачам.

  • Безопасность и защита данных: сервис обеспечивает безопасность хранения и передачи данных, а также защиту учетных записей пользователей.

  • Создание и управление задачами: пользователи могут создавать, просматривать, редактировать и удалять задачи. Пользователи могут настраивать повторения задач по указанным временным интервалам. Пользователи не могут создавать новые задачи, которые перекрывают старые.

  • Уведомления: Пользователи могут настраивать уведомления для задач, чтобы получать оповещения за определенный период времени до срока выполнения задачи. Уведомления отправляются на электронную почту.

  • Групповые расписания: Пользователи могут создавать групповые расписания и приглашать других пользователей для совместного использования. Групповые расписания могут содержать общие задачи, доступные для просмотра всем участникам группы.

  • Задачи в группах могут быть назначены администратором определенным участникам.

  • Сортировка и фильтрация задач: Пользователи могут сортировать и фильтровать задачи по различным критериям, чтобы легко находить нужные задачи.

Установка и настройка (требуется Docker)

Скачайте .zip файл, извлеките архив с кодом, переместитесь в корневую папку:

cd Eon-Backend-main/Eon-Backend-main/eon

Создайте файл .env со следующими тестовыми данными(учтите, что пароли для SMTP приложения вам нужно ввести свои!):

MDB_USERNAME=rootuser
MDB_PASSWORD=rootpass
SMTP_USERNAME=yourapplicationemail@somemail.com
SMTP_PASSWORD=your_super_secret_password
SECRET_KEY=JWT_secret_key

Запустите docker-compose.yml:

docker-compose up

Теперь сервер доступен на http://localhost:8091

Архитектура и структура кода

Сервер основывается на принципах RESTful архитектуры. В качестве хранилища данных используется MongoDB, для работы с почтой используется SMTP, для развертывания применяется Docker, для конфигурации CORS внутри контейнеров используется NGINX.

  • Классы Data Access Layer находятся в папке srс/java/rest/eon/models
  • Классы Service Layer находятся в папке src/java/rest/eon/services
  • Классы Controller Layer находятся в папке src/java/rest/eon/controllers
  • Классы конфигурации находятся в папке src/java/rest/eon/config
  • Классы репозиториев для доступа к базе данных находятся в папке src/java/rest/eon/repositories
  • Классы Data Transfer Objects находятся в папке src/java/rest/eon/dto
  • Классы обеспечения безопасности находятся в папке src/java/rest/eon/auth
  • Для развертывания сервера используется файл docker-compose.yml

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

Документация API будет доступна по адресу: http://localhost:8091/swagger-ui/index.html#/

image

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

  • Конфигурационный файл Spring Security находится в файле src/java/rest/eon/config/SecurityConfiguration.java

  • Конфигурационный файл для NGINX находится в файле services/nginx/nginx.conf и содержит прокси для работы в docker контейнере

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

  • Для тестирования необходимо предоставить секретный ключ для подписи токенов ${SECRET_KEY} в application.properties.
  • Тесты находятся в папке src/test/
  • Сервер тестируется с помощью Test Containers (см. https://www.testcontainers.org/)
  • Покрытие unit-тестами - 70%

About

Eon is a simple time management platform that allows users to easily control their time and plan schedule.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published