Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/timofeev-vadim-96/task-management-system

REST-API CRM-системы управления задачами внутри компании
https://github.com/timofeev-vadim-96/task-management-system

java junit liquibase mockito openapi postgresql spring swagger-ui

Last synced: 21 days ago
JSON representation

REST-API CRM-системы управления задачами внутри компании

Awesome Lists containing this project

README

        

### Система управления задачами (Task Management System)

---

`Локальный запуск / Quick start`
- из директории ./docker выполнить команду:
```bash
docker-compose up -d
```

`Documentation`
* [OpenAPI description](http://localhost:8080/api/v1/api-docs)
* [Swagger UI](http://localhost:8080/api/v1/swagger-ui)

`Описание проекта`
- реализована ролевая система пользователей: ADMIN, USER
- аутентификация пользователей производится с помощью JWT-токена по email и паролю
- эндпоинты REST API защищены с помощью цепочки фильтров Spring Security
- пользователя с ролью ADMIN может зарегистрировать только существующий и авторизованный администратор
- Логика ограничения доступа пользователей с ролью USER к заданиям других пользователей и их комментариям
реализована кастомно, с использованием аспектно-ориентированного подхода (Spring AOP)
- API позволяет получать задачи конкретного автора или исполнителя, а также все комментарии к ним
- на эндпоинте получения перечня заданий обеспечена **пагинация** и **фильтрация**, с кешированием результатов
- все входные данные валидируются, ошибки корректно обрабатываются в соответствующие HHTP-статусы
- сервис описан и задокументирован с помощью Open API и Swagger
- dev-среда поднимается с помощью **docker-compose**

`Логика функционала и доступа по ролям`
- Каждая **задача** содержит:
- id
- заголовок
- описание
- статус ("в ожидании", "в процессе", "завершено")
- приоритет ("высокий", "средний", "низкий")
- список комментариев
- автора задачи
- исполнителя задачи
- Каждый **комментарий** содерижт:
- id
- текст
- автора
- задачу
- **Администратор** может управлять всеми задачами:
- создавать новые,
- редактировать существующие,
- просматривать
- удалять
- менять статус и приоритет
- назначать исполнителей задачи
- оставлять комментарии
- **Пользователи** могут управлять своими задачами, если указаны как исполнитель:
- менять статус
- оставлять комментарии

`Тестирование`
* все контроллеры, сервисы, конвертеры и кастомный репозиторий покрыты тестами
* тесты безопасности вынесены в отдельные классы
* над всеми эндпоинтами сервиса произведено ручное тестирование с помощью Postman

> SECRET_KEY оставлен в application.yml осознанно, для демонстрации проекта и возможности локального запуска