docker-compose upmvn spring-boot:runor from IDE TaskManagementApplication.java
http://localhost:8080/swagger-ui/index.html
http://localhost:8080/v3/api-docs
The system should provide the ability to create, edit, delete and view tasks. Each task should contain a title, description, status (e.g. pending, in progress, completed), priority (e.g. high, medium, low), and the task author and assignee. Only the API needs to be implemented.
- The service must support user authentication and authorization by email and password.
- API access must be authenticated using a JWT token.
- Users can manage their tasks: create new ones, edit existing ones, view and delete, change the status and assign task executors.
- Users can view other users' tasks, and task executors can change the status of their tasks.
- You can leave comments on tasks.
- The API must allow you to get tasks of a specific author or assignee, as well as all comments on them. It is necessary to provide filtering and pagination of the output.
- The service must correctly handle errors and return understandable messages, as well as validate incoming data.
- The service must be well documented. The API must be described using Open API and Swagger. Swagger UI must be configured in the service. It is necessary to write a README with instructions for running the project locally. The dev environment must be raised using docker compose.
- Write several basic tests to check the main functions of your system.
- Use Java 17+, Spring, Spring Boot to implement the system. PostgreSQL or MySQL can be used as a database
http://localhost:8080/api/auth/register
{
"email": "user@example.com",
"password": "password"
}http://localhost:8080/api/auth/login
{
"email": "user@example.com",
"password": "password"
}http://localhost:8080/api/tasks
{
"header": "A",
"description": "B",
"status": "PENDING",
"priority": "HIGH",
"assigned": "assigned@example.com"
}You can specify what you want using parameters:
- size
- page
- creator
- assigned
http://localhost:8080/api/tasks?size=10&page=0&assigned=assigned@example.com&creator=user@example.comhttp://localhost:8080/api/tasks/{taskid}
{
"header": "Hot fix",
"description": "Investigate and fix the issue.",
"status": "IN_PROGRESS",
"priority": "HIGH",
"creator": "creator@exaple.com",
"assigned": "assigned@exaple.com"
}http://localhost:8080/api/tasks/{taskid}
http://localhost:8080/api/{taskid}/comments
some text