Вам необходимо разработать простую систему управления задачами (Task Management System) с использованием Java. Система должна обеспечивать создание, редактирование, удаление и просмотр задач. Каждая задача должна содержать заголовок, описание, статус (например, "в ожидании", "в процессе", "завершено") и приоритет (например, "высокий", "средний", "низкий"), а также автора задачи и исполнителя. Реализовать необходимо только API.
- Сервис должен поддерживать аутентификацию и авторизацию пользователей по email и паролю.
- Доступ к API должен быть аутентифицирован с помощью JWT токена.
- Пользователи могут управлять своими задачами: создавать новые, редактировать существующие, просматривать и удалять, менять статус и назначать исполнителей задачи.
- Пользователи могут просматривать задачи других пользователей, а исполнители задачи могут менять статус своих задач.
- К задачам можно оставлять комментарии.
- API должно позволять получать задачи конкретного автора или исполнителя, а также все комментарии к ним. Необходимо обеспечить фильтрацию и пагинацию вывода.
- Сервис должен корректно обрабатывать ошибки и возвращать понятные сообщения, а также валидировать входящие данные.
- Сервис должен быть хорошо задокументирован. API должен быть описан с помощью Open API и Swagger. В сервисе должен быть настроен Swagger UI. Необходимо написать README с инструкциями для локального запуска проекта. Дев среду нужно поднимать с помощью docker compose.
- Напишите несколько базовых тестов для проверки основных функций вашей системы.
- Используйте для реализации системы язык Java 17+, Spring, Spring Boot. В качестве БД можно использовать PostgreSQL или MySQL. Для реализации аутентификации и авторизации нужно использовать Spring Security. Можно использовать дополнительные инструменты, если в этом есть необходимость (например, кэш).
Перейти в корень и собрать проект:
docker-compose up
- Java 17+
- Spring, Spring Boot
- БД: PostgreSQL или MySQL
- Spring Security