Skip to content

0-zagar-0/Task-Master

Repository files navigation

book logo

Task Master

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

Technologies used

  • java logo Java 17+
  • maven logo
  • spring boot logo Spring Boot
  • spring boot logo Spring Data JPA
  • spring boot logo Spring Boot Security
  • spring boot logo JSON Web Token
  • Lombok
  • MapStruct
  • Liquibase
  • PostgreSQL
  • Hibernate
  • JUnit5
  • Testcontainers
  • Docker
  • Swagger
  • Dropbox API
  • Telegram API
  • Postman

How to use the project

1. Before you start, make sure you have installed:
  • java logo JDK 17+
  • docker logo Docker
  • If you wish, you can test the application in Postman: Postman

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.

2. Clone repository
git clone https://github.com/0-zagar-0/Task-Master.git
3.Create an .env file in the root directory

See an example of a sample .env-sample

4.Run these commands to create a docker container and run the image
docker-compose build
docker-compose up
5. Now whatever port you specified in SPRING_LOCAL_PORT, the program will run on that port
example - http://localhost:8081

General use

6.There are already 10 users saved in the database:

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.

7.Dropbox

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.

Entities

User

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.
        

Project

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.
        

Task

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.
        

Comment

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.
        

Attachment

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.
        

Label

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.
        

Database structure

database structure

Endpoints

Authentication Management

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

User Management

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.

Project Management

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.

Task Management

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.

Comment Management

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.

Attachment Management

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 .

Label Management

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.

Swagger-ui usages

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#

Notification Service

A telegram bot was created for managers to notify them about newly created reservations and paid or canceled payments. You can join the bot when you test the application.

https://t.me/task_management_system_new_bot

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors