Este repositorio contiene una API para gestionar un sistema de comercio electrónico. La aplicación está desarrollada en Java utilizando Spring Boot, con un enfoque en las buenas prácticas de desarrollo, incluyendo principios de arquitectura limpia y patrones de diseño.
- Gestión de usuarios y autenticación.
- Catálogo de productos con soporte para búsqueda y filtrado.
- Carrito de compras y procesamiento de pedidos.
- Integración con bases de datos para persistencia de datos.
- Documentación de la API con OpenAPI (Swagger).
- Trazas, logs y métricas implementadas con el Grafana Stack (Grafana, Loki y Prometheus).
- Arquitectura hexagonal para una mejor separación de responsabilidades.
- Autenticación basada en JWT (JSON Web Tokens).
- Pipeline de integración continua configurado con GitHub Actions.
- Java 17
- Spring Boot 3
- Spring Security para la autenticación y autorización.
- JPA/Hibernate para la interacción con la base de datos.
- MySQL como base de datos relacional.
- OpenAPI para la documentación de la API.
- JUnit y Mockito para pruebas unitarias.
- Docker para la contenedorización de la aplicación.
- Grafana Stack (Grafana, Loki, Prometheus) para monitoreo y observabilidad.
- GitHub Actions para integración continua.
Antes de ejecutar el proyecto, asegúrate de tener instalado:
- Java 17 o superior.
- Maven para la gestión de dependencias.
- Docker (opcional, para despliegue con contenedores).
- MySQL (si no usas Docker para la base de datos).
-
Clona este repositorio:
git clone https://github.com/David-DAM/ecommerce-api.git cd ecommerce-api
-
Configura las variables de entorno en el archivo
application.yml
oapplication.properties
para conectar la base de datos:spring: datasource: url: jdbc:mysql://localhost:3306/spring username: root password: password jpa: hibernate: ddl-auto: update
-
Configura el stack de observabilidad (Grafana, Loki, Prometheus) utilizando Docker Compose o la herramienta de tu preferencia. Asegúrate de enlazar los servicios correctamente.
-
Compila el proyecto con Maven:
mvn clean install
-
Ejecuta la aplicación:
mvn spring-boot:run
-
Accede a la documentación de la API en http://localhost:8080/swagger-ui.html.
-
Usuarios:
- Registro de usuarios:
POST /api/v1/users/register
- Login:
POST /api/v1/users/login
- Registro de usuarios:
-
Productos:
- Obtener lista de productos:
GET /api/v1/products
- Detalle de un producto:
GET /api/v1/products/{id}
- Obtener lista de productos:
-
Carrito de compras:
- Agregar un producto:
POST /api/v1/cart
- Ver el carrito:
GET /api/v1/cart
- Agregar un producto:
-
Pedidos:
- Crear un pedido:
POST /api/v1/orders
- Obtener pedidos:
GET /api/v1/orders
- Crear un pedido:
Para ejecutar las pruebas unitarias:
mvn test
-
Construye la imagen de Docker:
docker build -t ecommerce-api .
-
Ejecuta el contenedor:
docker run -p 8080:8080 ecommerce-api
-
Asegúrate de tener un contenedor o instancia de MySQL corriendo con la base de datos configurada.
-
Despliega el stack de observabilidad con Grafana, Loki y Prometheus para habilitar monitoreo y trazabilidad.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más información.
Desarrollado por David-DAM.