Task management tool for teams or personal use.
This project was developed as part of the Netcracker training center (spring 2022). 🍪
Client-server browser application written in Java 15
using the Spring
framework.
The application has MVCS (Model - View - Controller - Service) architecture. The service layer contains the business logic. Controllers have access to the service layer, and the service layer processes data and communicates with the DAO layer.
The application can be run using Docker
. The application has Dockerfile
and docker-compose.yml
.
You can use the following commands to run docker containers:
mvn clean package
docker-compose build
docker-compose up
Expected result:
User login and registration pages:
Main page with a list of all tasks. Tasks are displayed sorted by status. If you are currently working on a task (marked as active), then it is displayed first in the list.
❗ Warning!
The user cannot work on more than one task at a time. If the user already has an active task and clicks 'activate' for another task, then the first task will become inactive and the second one will be activated. The active task is also deactivated when the user logs out via the button.
Using the buttons All
, Assigned
, Created
, the user can highlight certain groups of tasks.
- Button
All
- deselect tasks - Button
Assigned
- highlights in yellow the tasks that are assigned to you - Button
Created
- highlights in blue the tasks created by you
You can open a task and view its description in more detail. If the user is the creator of the task, then he can change the user-executor and a due date. He can also cancel it by setting the status to CANCELED
. If the user has administrator rights, then he can change these parameters for any task.
On the same page there is a button Create subtask
. Clicking the button will redirect the user to the create a new task page.
If you need to create a task, you can do this by going to the creation page from the main one.
When creating a task, the fields "name" and "description" are required.
If the user does not want to view the list of all tasks, then he can select one of the sections with a certain type of task.
Each task can have one of five statuses:
- ⚫
TODO
- 🟡
ACCEPTED
- 🔵
IN PROGRESS
- 🟢
DONE
- 🔴
CANCELED
More about each status:
TODO
- The status is assigned to any task automatically when it is created.ACCEPTED
- The task changes from theTODO
status to theACCEPTED
status when the user clicks the button 'Accept'. This means that the user has seen the task assigned to him and will be planning to work on it.IN PROGRESS
- The status is assigned to the task when a user started working on it for the FIRST TIME (pressed the button 'Activate').DONE
- The statusDONE
means that the user has finished working on the task.CANCELED
- TheCANCELED
status means that this task has been canceled.
A user with the USER role can usually only do the following: change the status of a task from IN PROGRESS
to DONE
.
Also, a user with the USER role can change the status to CANCELED
in any moment if he is the CREATOR of this task.
A user with the ADMIN role can change the status of any task to IN PROGRESS
, DONE
, CANCELED
at any time.
The 'statistics' section allows you to see the duration of work on tasks.
First, you need to select the start and finish of the period for which you want to get statistics. You can also select none of the dates, or select only one.
Then the user can select the task for which he wants to get statistics. He can get the time of work on only one specific task, or he can get the duration of work on a task, taking into account the work on all its subtasks.
If the user does not select a specific task, then he will get the duration of work on all tasks.
In the drop-down list of tasks, the user displays those tasks on which the user has ever worked. Even if the user is not currently the executor for the task, but previously worked on it, it will be in the list.
If the user has not worked on tasks, then he will see the following in the statistics section:
For the administrator, the statistics section looks different. First, the administrator needs to select the user for which he wants to see statistics.
After selecting a user, the administrator will already be able to select parameters for statistics for a particular user.
In the History section, the user can view the history of task changes. When you go to this section, the user is shown a history of changes for the last three days.
The user can select the following options for filtering:
- Time interval
- Task type (created by user / assigned to user)
- Changed parameter
For the administrator, the section looks different. He has to select a specific user for which the administrator wants to get the history.
This application is written in Java 15
using these libraries and tools:
- Spring Framework Boot 2.6.7
- Thymeleaf 3.0.15
- PostgreSQL 14.2
- Lombok 1.18.24
- log4j 1.2.12
- Docker Compose 3.9
- Maven - Dependency Management