This project is a web-based Kanban system for project management. It allows users to manage projects, organize tasks into different stages, and track the progress of tasks.
![Screenshot 2024-04-29 at 11 17 36 PM](https://private-user-images.githubusercontent.com/88043734/326655818-04364ba1-039f-45c1-bb7e-091d9e46689f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NjkyOTcsIm5iZiI6MTcyMzg2ODk5NywicGF0aCI6Ii84ODA0MzczNC8zMjY2NTU4MTgtMDQzNjRiYTEtMDM5Zi00NWMxLWJiN2UtMDkxZDllNDY2ODlmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE3VDA0Mjk1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUwNmNmOTdhMjVmMDFhMmE1ZmEyYmY3MzRiYzE3OTY0MzBlNTdjMWRiNzkwMjg0ZDljZjAwZTY3Y2NlN2E3NDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.WwbMLaCtc700mpXK0MeRpP_2LrdXAFYBd6RPo7uYy28)
![Diagrama_UML](https://private-user-images.githubusercontent.com/88043734/326218402-c2e96e00-8215-4ea2-8da4-944893f78d58.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NjkyOTcsIm5iZiI6MTcyMzg2ODk5NywicGF0aCI6Ii84ODA0MzczNC8zMjYyMTg0MDItYzJlOTZlMDAtODIxNS00ZWEyLThkYTQtOTQ0ODkzZjc4ZDU4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE3VDA0Mjk1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgzNWFjY2U4YzlkOTNhMDk0NTgyNDUyYTkxNDcwZDZjMTdiNzk3YWQwYTFjNDc1YTg4NmQxY2JmZTZhMTA2YTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.lb-dqaGkMECJ8T9rl5twZ1Yd2tuQeVt9BZp17rem6l0)
![Diagrama_DER](https://private-user-images.githubusercontent.com/88043734/326218415-ef014a87-4bab-42f6-808c-5af79ca42587.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NjkyOTcsIm5iZiI6MTcyMzg2ODk5NywicGF0aCI6Ii84ODA0MzczNC8zMjYyMTg0MTUtZWYwMTRhODctNGJhYi00MmY2LTgwOGMtNWFmNzljYTQyNTg3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE3VDA0Mjk1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMwMWM2YTE3OGE3NjcwMTAxYWY0YWM2NjVlN2I4MDJhODJjMTJhZjFhOTczODlkNTcyOWQwMzcxOTM5MjM4YTkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PND6jYyGok7djcyYoHCOM7jUGvKs38paf8GLR24L0gg)
- โ Java
- ๐ Spring Boot
- ๐พ Spring Data JPA
- ๐ ๏ธ Hibernate
- ๐๏ธ MySQL
- ๐ JWT (JSON Web Tokens)
- ๐ Swagger UI
- ๐ฆ Maven
- Clone the repository:
git clone https://github.com/Pezcue/SpringBootRest.git
- Configure the MySQL database: Update the
application.properties
file with your database configuration. - Compile and run the application:
mvn spring-boot:run
- Access the application: Open your browser and go to
http://localhost:8080
- Explore the API: Use Swagger UI to explore and test the API endpoints at
http://localhost:8080/swagger-ui.html
- โจ
POST /v1/projects/
: Create a new project. - โ๏ธ
PUT /v1/projects/{id}
: Edit an existing project. - โ
DELETE /v1/projects/{id}
: Delete a project. - ๐
GET /v1/projects/{id}
: Get a project by its ID. - ๐
GET /v1/projects/{id}/board
: Get all tasks of a project grouped by status. - โฐ
GET /v1/projects/{id}/due-task
: Get overdue tasks of a project.
- โจ
POST /v1/task/project/{1id}
: Create a new Task. - โ๏ธ
GET /v1/task/{id}
: Edit an existing Task. - โ
DELETE /v1/task/{id}
: Delete a Task. - ๐ง
PATCH /v1/task/{id}
: Update the status of a task.
The API uses JWT (JSON Web Tokens) for user authentication and authorization. To obtain an access token, follow these steps:
- Authenticate: Send a POST request to
/auth/login
with valid credentials in the request body. - Receive Token: If the credentials are correct, you will receive an access token in the response.
- Include Token: Include the access token in the
Authorization
header of subsequent requests to protected endpoints.
The API handles errors and returns appropriate responses for invalid requests or resources not found. Error messages are included in the response body with an appropriate HTTP status code.
Unit and integration tests have been implemented to ensure the proper functioning of the application. You can run the tests using the following command:
mvn test
Contribution
If you wish to contribute to this project, please follow these steps:
Fork the repository.
Create a new branch: For your feature or bug fix.
Make Changes: Make necessary changes and ensure that tests pass.
Submit a Pull Request: Describe your changes and submit a pull request.
Contact
If you have any questions or suggestions about this project, feel free to contact us at [insert your contact information here].