Skip to content

Dima23-ops5/FlowBoard

Repository files navigation

BookWorld Logo

FlowBoard system

Introduction


What inspired me to create this project?

The primary inspiration for developing this project was to gain hands-on experience with Spring Boot and working with APIs. I aimed to create a task management application that enables effective organization of projects and tasks among team members. This tool allows users to assign tasks to developers, add new members to projects, and provide a centralized platform for sharing information through comments on tasks. The ability to add comments can help team members communicate effectively and resolve issues more quickly. Additionally, the app includes a feature for uploading attachments to Dropbox, making document management simpler and ensuring that necessary resources are readily available to all collaborators.

What problems does my project resolve?

This web application addresses several core challenges in project and task management, especially for collaborative teams. It offers structured organization of tasks and projects, enabling users to prioritize critical tasks and avoid missed deadlines through deadline tracking and automated email reminders. The application simplifies user management, providing role-based access, secure authentication, and the ability to manage team members within projects. It also enhances communication by allowing users to leave comments on tasks, centralizing discussions and relevant information. With Dropbox integration, users can efficiently manage files, ensuring that all necessary resources are readily available. Additionally, label-based task categorization helps users organize tasks based on topics or workflow stages, facilitating better focus and task tracking. Overall, the app streamlines project organization, boosts collaboration, and ensures that deadlines and task priorities are consistently managed.


What can do roles USERS and ADMINISTRATORS?

Role: USER

  • Can register an account.
  • Can check personal information.
  • Can update personal information.
  • Can get all projects or get project by id.
  • Can get all tasks or get tasks by id.
  • Can get all labels for tasks or get labels by id.
  • Can write and check comments.
  • Can upload attachments and check all attachments.

Role: ADMINISTRATOR

  • Has the ability to add, update, and delete projects, tasks, labels in the system.
  • Can update user roles.

Technologies and Tools used


Technologies:

Core Backend Technologies:

Security & Authentication:

Data Processing & Utilities:

Database:

Communication & Documentation:


Development Tools:


Collaboration & Storage


Functionality of controllers


Authentication Management

HTTP Request Endpoint Description
POST /api/auth/registr Register a new user
POST /api/auth/login Login an existing user

User Management

HTTP Request Endpoint Description
PUT /users/{id}/role Update user's role
GET /users/me Get user's personal information
PATCH /users/me Update user's personal information

Project Management

HTTP Request Endpoint Description
POST /api/projects Create project and save to database
GET /api/projects Get all projects for current registered user
GET /api/projects/{id} Get project by its ID
PUT /api/projects/{id} Update project by its ID
DELETE /api/projects/{id} Delete project from database by its ID

Task Management

HTTP Request Endpoint Description
POST /api/tasks Create task and save to database
GET /api/tasks Get all available tasks
GET /api/tasks/{id} Get task by its ID
PUT /api/tasks/{id} Update task by its ID
DELETE /api/tasks/{id} Delete task from database by its ID

Comment Management

HTTP Request Endpoint Description
POST /api/comments Create comment and save to database
GET /api/comments/{taskId} Get all available comments for task

Attachment Management

HTTP Request Endpoint Description
POST /api/attachments/taskId Upload new attachments and save its ID and name to database for task
GET /api/attachments/taskId Get all available attachments for task

Label Management

HTTP Request Endpoint Description
POST /api/labels Create label and save to database
GET /api/labels Get all available labels
PUT /api/labels/{id} Update label by its ID
DELETE /api/labels/{id} Delete label from database by its ID

Database structure


database structure

Getting started project


Steps

  1. Prerequisites Docker and Docker Compose on your machine.
  2. Clone the Repository
     git clone https://github.com/Dima23-ops5/FlowBoard
  3. Navigate to the project directory
     cd FlowBoard
  4. Configure Environment Variables:
  • Write your date to .env file in the project directory to store your database credentials. This file should contain the necessary environment variables, such as DB_HOST, DB_USER, and DB_PASSWORD.
  • Update the application.properties file located in the src/main/resources directory with your specific database connection details and any other necessary configurations.
  1. Set Up the Environment:

    Ensure Docker and Docker Compose are installed on your system. You can configure environment variables directly in the docker-compose.yml file.

  2. Build and Run the Application:

    docker-compose build
    docker-compose up
  3. Access the Application:

    The application will be available at http://localhost:8080/.


API Documentation


To explore and test the API endpoints, you can use Swagger. Swagger provides interactive API documentation that allows you to test endpoints directly from the browser.


Testing in Postman


  • Postman collection

task-management.postman_collection.json

  • Short instruction how to use postman collection

You can view the instructional video via this link : https://www.loom.com/share/8c874b3104fc436ab7494d383ea1e5b6?sid=5cdee694-22ea-4e5b-a283-346bfe1b5cfa

Challenges & Solutions


  1. Dropbox API integration

Integrating the Dropbox API was one of the more challenging aspects of this project. This was my first experience working with a third-party API, and it required a significant investment of time to fully understand how to implement it correctly. Initially, I struggled with understanding the authentication process and the correct way to handle file uploads and retrievals via the API, as this process was new to me.

To overcome these challenges, I dedicated time to thoroughly reviewing Dropbox’s API documentation, which provided valuable details on authentication methods, endpoint usage, and best practices for integration. Additionally, I watched several instructional videos on YouTube, which helped clarify the workflow and provided practical examples of Dropbox API implementation. Through persistence and careful study, I was able to successfully integrate Dropbox into my application, allowing users to upload and access attachments seamlessly within the app. This experience not only enhanced the functionality of the project but also expanded my skillset in working with external APIs, a critical skill for developing more complex applications in the future.


Contacts


For any questions or suggestions, feel free to reach out:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors