Welcome to Task Master! Our platform revolutionizes project and task management, providing a convenient and efficient experience for both users and administrators. Task Master simplifies user registration, project and task management, user notifications, and file storage through Dropbox integration. Whether you are assigning tasks, adding comments, or managing attachments, Task Master ensures a streamlined workflow. Thank you for choosing Task Master to enhance your productivity and project management experience.
Technologies used <> How to use <> Entities <> Database Structure <> Endpoints <> Swagger <> Notification
If you use Postman, go to the postman folder and import the file into Postman,
you will have all the endpoints that are in the application.
git clone https://github.com/0-zagar-0/Task-Master.git
See an example of a sample .env-sample
docker-compose build
docker-compose up
example - http://localhost:8081
User with role ADMIN
email - admin@example.com
password - User=123456789
User with role USER
There are 9 users, you can change the number after the word "user" from 1 to 9
email - user1@example.com
password - User=123456789
to use the endpoints, can you register a new user.
A test account has been created on the Dropbox platform, connect and test the application.
email - intelej.dl9.zagara@gmail.com
password - 3215987Sanek
Follow this link
https://www.dropbox.com/developers/apps
Select My apps - Task Management System. Then scroll to the bottom and Generate Access token and then insert it into the application.properties file in the appropriate line.
The user entity represents detailed information about registered users.
At this stage, there are only 2 roles that grant certain access rights to users, these are: ADMIN and USER.
The Project entity allows users to manage their projects effectively.
Each project includes a name, description, start date, end date, and status (which can be initiated, in progress, or completed).
The Project Controller provides endpoints for creating, retrieving, updating, and deleting projects,
ensuring secure and efficient project management for authorized users.
The Task entity enables users to manage their project tasks efficiently. Each task includes a name, description, priority (low, medium, high),
status (not started, in progress, completed), due date, project ID, and assignee ID. The Task Controller provides endpoints for creating,
retrieving, updating, and deleting tasks. Tasks can be assigned to users, and assignees are notified of new tasks.
This functionality ensures streamlined task management within projects.
The Comment entity allows users to add feedback and updates to tasks. Each comment includes a task ID, user ID, text, and timestamp.
The Comment Controller provides endpoints for adding comments to a task and retrieving comments for a specific task.
This feature facilitates clear communication and collaboration within projects by enabling users to add,
view, and manage comments related to tasks.
Attachments enhance project collaboration by providing a mechanism to share files related to tasks.
Integration with Dropbox ensures robust file storage and efficient retrieval.
Access to attachment functionalities is restricted to authorized users to maintain security and privacy.
Labels enhance task management by providing a flexible way to categorize and filter tasks within projects. Users can create, modify,
and delete labels as needed to suit project requirements. Assigning labels to tasks helps in organizing and prioritizing tasks effectively.
Access to label functionalities is controlled to ensure that only authorized users can create, modify, or delete labels,
maintaining data integrity and security.
| HTTP Request | Endpoints | Security requirement | Description |
|---|---|---|---|
| POST | /api/auth/register | None | Allows users to register a new account. |
| POST | /api/auth/login | None | Login with email and password. Response - JWT token |
| HTTP Request | Endpoints | Security requirement | Description |
|---|---|---|---|
| GET | /api/users/me | ADMIN, USER | Retrieves the profile information for the currently logged-in user. |
| PUT | /api/users/{id}/role | ADMIN | Enables users to update their roles, providing role-based access. |
| PUT | /api/users/me | ADMIN, USER | Allows users to update their profile information. |
| HTTP Request | Endpoints | Security requirement | Description |
|---|---|---|---|
| POST | /api/projects | ADMIN, USER | Permits the addition of new projects. |
| GET | /api/projects | ADMIN, USER | Provides a list of user's projects. |
| GET | /api/projects/{id} | ADMIN, USER | Retrieves detailed information about project |
| PUT | /api/projects/{id} | ADMIN, USER | Allows updates to project details. |
| DELETE | /api/project/{id} | ADMIN, USER | Enables project main user the removal of project. |
| HTTP Request | Endpoints | Security requirement | Description |
|---|---|---|---|
| POST | /api/tasks | ADMIN, USER | Permits the creation of new task. |
| GET | /api/tasks/project/{projectId} | ADMIN, USER | Retrieves tasks for a project. |
| GET | /api/tasks/{id} | ADMIN, USER | Retrieves task details |
| PUT | /api/tasks/{id} | ADMIN, USER | Allows project admins to update task details. |
| DELETE | /api/tasks/{id} | ADMIN, USER | Allows project admins to delete task. |
| HTTP Request | Endpoints | Security requirement | Description |
|---|---|---|---|
| POST | /api/comments | ADMIN, USER | Permits the creation a comment. |
| GET | /api/comments?taskId= | ADMIN, USER | Retrieves a list task comments. |
| PUT | /api/comments/{id} | ADMIN, USER | Allows the user who wrote the comment to update it. |
| DELETE | /api/comments/{id} | ADMIN, USER | Allows the user who wrote the comment to delete it. |
| HTTP Request | Endpoints | Security requirement | Description |
|---|---|---|---|
| POST | /api/attachments | ADMIN, USER | Upload an attachment to a task (File gets uploaded to Dropbox and we store the Dropbox File ID in our database). |
| GET | /api/attachments/{attachmentId} | ADMIN, USER | Retrieve(download) attachment for a task (Get the Dropbox File ID from the database and retrieve the actual file from Dropbox). |
| GET | /api/attachments/task/{id} | ADMIN, USER | Retrieve(downloads) all attachments for a task . |
| HTTP Request | Endpoints | Security requirement | Description |
|---|---|---|---|
| POST | /api/labels | ADMIN, USER | Permits the creation of new label. |
| GET | /api/labels/project/{projectId} | ADMIN, USER | Retrieves all labels for a project. |
| GET | /api/labels/{id} | ADMIN, USER | Retrieves label details |
| PUT | /api/labels/{id} | ADMIN, USER | Allows to update label details. |
| DELETE | /api/labels/{id} | ADMIN, USER | Allows to delete label. |
If you will test the application locally in swagger, then after launching the application, follow this link. Use the port specified in the .env file
http://localhost:8081/api/swagger-ui/index.html#