(dev.ropimasi.taskmanagerapi)
- Attention: Rights, License and Disclaimer
- Description
- Description - Screenshots
- Techniques Used
- Versioning Guideline
- Features
- Instructions
- Author
IMPORTANT NOTE / DISCLAIMER: (en-US) This is a personal, private project, exclusively for the purposes of my studies in software development; This project and its resources are an integral, indivisible, inseparable part of a private project, which has its use expressly exclusive to its author, Ronaldo Silva (ropimasi@email.com / http://ropimasi.dithub.io); Any use, sale, rental, distribution, in part or in full of this project is prohibited; It is a project under development and experimentation, therefore I do not recognize or assume any responsibility for its use, nor for any possible reflections or consequences of such use.
NOTA IMPORTANTE / ISENÇÃO DE RESPONSABILIDADE: (pt-BR) Este é um projeto pessoal, privado, exclusivamente para fins dos meus estudos em desenvolvimento de software; Este projeto e seus recursos são parte integrante, indivisível, indissociável de um projeto privado, que tem seu uso expressamente exclusivo ao seu autor, Ronaldo Silva (ropimasi@email.com / http://ropimasi.github.io); É proibida qualquer utilização, venda, locação, distribuição, parcial ou integral deste projeto; É um projeto em desenvolvimento e experimentação, portanto não reconheço ou assumo qualquer responsabilidade pelo seu uso, nem por quaisquer possíveis reflexos ou consequências de tal uso.
- SUBJECT: Java and Spring application for an API CRUD;
- PROJECT NAME: TASK MANAGER API;
- WHAT IS: TASK MANAGER API is a small software aims to provide an API CRUD to tasks registry. More information about versions and compatibility can be found below;
- TECH-STACK:
- Java 17
- Spring Boot 3
- Spring Data JPA
- Lombok
- Hibernate Validator
- PostgreSQL v16
- Layered Architecture: Clear separation between Controller, Service, Repository, and DTOs;
- Data Mapping: Use of a dedicated Mappers layer to isolate JPA Entities from API Contracts (DTOs);
- Immutability with Java Records: Use of Records for data representation, ensuring concise and immutable DTOs;
- Global Error Handling: Centralization of exceptions with @ControllerAdvice, returning standardized errors and semantic HTTP codes;
- Automatic Auditing: Automated registering of creation date (createdAt) and update date (updatedAt) managed by Hibernate;
- Data Validation: Use of Bean Validation to ensure the integrity of received information (e.g., @NotBlank, @Size);
- Robust Persistence: Integration with Spring Data JPA for efficient operations on relational databases.
In a team project, it is very important to know and follow the specifications of the project version. This project is designed under SemVer (Semantic Versioning Specification).
Thus, this project uses SemVer for its versioning. SemVer is a specification (set of rules) that tells us (or dictates) how to use the numbers (and some letters) on the versioning-expression (VerExpr).
See more details about the versioning for this project in readme-pages/versioning.md.
- Task creation: Endpoint to registry new tasks with required fields validation;
- General listing: Recovering all tasks registered and converted to a DTO list;
- Search by
Id: Detailed seeking a specific task id; - Fully update (PUT): Edit an existent task replacing all fields;
- Partial update (PATCH): Edit an existent task replacing only some fields sent in the request's body;
- Hard delete: Exclusion of records on databse by
Id. - Search by
completefield: Detailed seeking of a list of tasks withcompletefield marked as complete; - Search by
completefield: Detailed seeking of a list of tasks withcompletefield marked as not complete; - Search by
titlefield: Detailed seeking of a list of tasks withtitlefield containing a string sent by API's client; - Centralized exception handling: Standardized API error responses for better client-side integration;
- Unit Testing: Implementation of comprehensive unit tests using JUnit and Mockito;
- API Documentation: Integration with OpenAPI/Swagger for interactive documentation;
- All features above, and plus...
- Multi-user Support: Introduction of the
Userentity and task-to-user bounding; - Security: Implementation of Authentication and Authorization to restrict task access to owners only.
//TODO:
//TODO:
| https://ropimasi.github.io | linkedin @ropimasi | x (twitter) @ropimasi | instagram @ropimasi | ropimasi@email.com |



