Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/azapata27/quind-technical-test
Technical test for the Tech Lead position at quind.io company.
https://github.com/azapata27/quind-technical-test
h2-database hexagonal-architecture java-21 lombok mapstruct maven spring-boot
Last synced: 6 days ago
JSON representation
Technical test for the Tech Lead position at quind.io company.
- Host: GitHub
- URL: https://github.com/azapata27/quind-technical-test
- Owner: AZapata27
- License: apache-2.0
- Created: 2024-04-11T22:22:12.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2024-04-16T02:33:49.000Z (7 months ago)
- Last Synced: 2024-04-16T05:21:07.765Z (7 months ago)
- Topics: h2-database, hexagonal-architecture, java-21, lombok, mapstruct, maven, spring-boot
- Language: Java
- Homepage:
- Size: 1.23 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# QUIND - Technical Test
This is a sample project for the Tech Lead position at [quind.io](https://quind.io/) company. Implementing an application using Java Spring Boot with a hexagonal architecture and domain-driven use cases.
The application allows for the management of clients and financial products for a banking institution.## System Requirements
- Java 21
- Maven
- Spring Boot 3.2.4
- H2 Database
- MapStruct
- Lombok (optional)## Project Structure
The project follows a hexagonal structure to separate the different layers of the application:
- `domain`: Contains the use cases and domain entities.
- `application`: Contains the application logic and implementation of use cases.
- `infrastructure`: Contains implementations of repository interfaces and any other external infrastructure.## Project Setup
To run the application, simply follow these steps:
1. Clone the repository from [GitHub](https://github.com/AZapata27/quind-prueba-tecnica.git).
2. Open the project in your favorite IDE.
3. Make sure you have Java 21 installed.
4. Run `mvn clean install` to build the project.
5. Run the main class `Application.java`.## Using the API
The REST API provides endpoints for managing clients and financial products. Here are the main available endpoints:
- **Clients**:
- `POST /api/v1/clients`: Create a new client.
- `PUT /api/v1/clients/{id}`: Update an existing client.
- `DELETE /api/v1/clients/{id}`: Delete an existing client.- **Products**:
- `POST /api/v1/products`: Create a new product.
- `PUT /api/v1/products/{id}`: Update an existing product.
- `DELETE /api/v1/products/{id}`: Cancel an existing product.
- **Transactions**:
- `POST /api/v1/transaction`: Create a new transaction base on product and client.## Additional Documentation
For more details on how to use the API and data models, refer to the automatically generated documentation in Swagger UI.
You can access it at [http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html) once the application is running.## ANALYSIS && DIAGRAMS
![ANALYSIS](https://github.com/AZapata27/quind-prueba-tecnica/blob/master/src/main/resources/static/Analysis.png).
![DIAGRAM](https://github.com/AZapata27/quind-prueba-tecnica/blob/master/src/main/resources/static/diagrama_flujo.png).