Task Management System — это современная система управления задачами, разработанная с использованием Java и Spring Boot. Приложение предоставляет RESTful API для создания, редактирования, удаления и просмотра задач, а также поддерживает комментарии, фильтрацию и пагинацию.
- Сервис должен поддерживать аутентификацию и авторизацию пользователей по email и паролю.
- Доступ к API должен быть аутентифицирован с помощью JWT токена.
- Создать ролевую систему администратора и пользователей.
- Администратор может управлять всеми задачами: создавать новые, редактировать существующие, просматривать и удалять, менять статус и приоритет, назначать исполнителей задачи, оставлять комментарии.
- Пользователи могут управлять своими задачами, если указаны как исполнитель: менять статус, оставлять комментарии.
- API должно позволять получать задачи конкретного автора или исполнителя, а также все комментарии к ним. Необходимо обеспечить фильтрацию и пагинацию вывода.
- Сервис должен корректно обрабатывать ошибки и возвращать понятные сообщения, а также валидировать входящие данные.
- Сервис должен быть хорошо задокументирован. API должен быть описан с помощью Open API и Swagger. В сервисе должен быть настроен Swagger UI. Необходимо написать README с инструкциями для локального запуска проекта. Дев среду нужно поднимать с помощью docker compose.
- Напишите несколько базовых тестов для проверки основных функций вашей системы.
- Используйте для реализации системы язык Java 17+, Spring, Spring Boot. В качестве БД можно использовать PostgreSQL или MySQL. Для реализации аутентификации и авторизации нужно использовать Spring Security. Можно использовать дополнительные инструменты, если в этом есть необходимость (например кэш).
- Нужно склонировать репозиторий:
git clone https://github.com/RemasLover13/TaskManagementSystem.git
- Перейдите в директорию проекта:
cd TaskManagementSystem
- Соберите проект с помощью maven:
mvn clean package
- Запустите проект с помощью Docker Compose:
docker-compose up -d --build
- API доступно по адресу:
http://localhost:8080
http://localhost:8080/swagger-ui/index.html
docker-compose exec db psql -U postgres -d task_management_db
- Узнать id, зарегистрированного пользователя
select * from users;
- Установить в таблицу users_roles ROLE_ADMIN
INSERT INTO users_roles(user_id, role_id)
VALUES (1,1);
- Backend : Spring Boot + Spring Data JPA.
- База данных : PostgreSQL (основная) + H2 (для тестов).
- Кеширование : Redis через Spring Cache.
- Аутентификация : JWT (JSON Web Tokens) через библиотеку Auth0.
- Документация API : OpenAPI (Swagger).
- Тестирование : JUnit 5, Mockito, Spring Boot Test, Spring Security Test.

