Este es un proyecto de API creado como plantilla para demostrar las capacidades de Spring Boot con varias tecnologías y herramientas. La API está diseñada para ser extensible y adaptable a diferentes necesidades.
Java: Lenguaje principal para el desarrollo de la lógica de negocio. ☕
Spring Boot: Framework utilizado para crear servicios web RESTful. 🌿
Spring Boot Starter Data JPA: Para la integración con JPA para el manejo de datos. 🗄️
Spring Boot Starter Web: Para el desarrollo de aplicaciones web. 🌐
Spring Boot Starter Security: Para implementar seguridad en la aplicación. 🔐
Spring Boot Starter OAuth2 Resource Server: Para la implementación de autenticación y autorización con OAuth2.
Base de Datos: 🗃️
MySQL: Sistema de gestión de base de datos utilizado para almacenar la información de la aplicación. 🗄️
MySQL Connector: Conector JDBC para MySQL.
JWT (JSON Web Tokens):
jjwt-api
,jjwt-impl
,jjwt-jackson
: Bibliotecas para la generación y validación de tokens JWT.
Correo Electrónico: 📧
Mailjet Client: Para el envío de correos electrónicos a través de Mailjet.
Generación de Documentos:
- iText7: Para la generación de PDFs. 📄
- Flying Saucer y OpenPDF: Herramientas para renderizar y generar documentos PDF. 📄
- Apache PDFBox: Para la manipulación de documentos PDF.
Mapeo de Objetos:
- MapStruct: Para la conversión entre objetos Java.
- Reconocimiento Óptico de Caracteres (OCR): 🔍
- Tess4J: Biblioteca para implementar OCR usando Tesseract con IA. 🤖
Thymeleaf: Motor de plantillas para generar vistas dinámicas en el servidor.
Lombok: Biblioteca para reducir el código boilerplate en Java. 🔧
Testing:
- JUnit: Framework de pruebas unitarias. 🔬
- Spring Boot Starter Test y Spring Security Test: Para pruebas en la aplicación. 🧪
Este proyecto utiliza Arquitectura Hexagonal (también conocida como Arquitectura de Puertos y Adaptadores) para organizar el código y facilitar la extensión y mantenimiento. La arquitectura hexagonal ayuda a mantener el núcleo de la aplicación desacoplado de las interfaces externas (como bases de datos, servicios web, etc.).
En esta arquitectura, el núcleo de la aplicación está en el centro, y las interfaces externas se comunican con él a través de puertos y adaptadores. Los puertos definen las operaciones que el núcleo puede realizar, mientras que los adaptadores implementan las interfaces para interactuar con el núcleo.
Para más información sobre la Arquitectura Hexagonal, puedes consultar la documentación oficial y artículos adicionales.
Para clonar este repositorio y ejecutar la aplicación localmente, sigue estos pasos:
-
Clona el repositorio:
git clone https://github.com/maurogebe/template-api-spring-boot.git
-
Navega al directorio del proyecto:
cd template-api-spring-boot
-
Construye el proyecto usando Gradle:
./gradlew build
-
Ejecuta la aplicación:
./gradlew bootRun
- Nombre: Fabian Mauricio Guerra Bedoya
- LinkedIn: Fabian Mauricio Guerra Bedoya
- Correo Electrónico: maurogebe.96@gmail.com
Este proyecto está licenciado bajo la MIT License.