Esta aplicación permite gestionar franquicias, sus sucursales y productos utilizando Java 17, Spring Boot 3, programación reactiva con WebFlux y MongoDB como base de datos.
- Crear y consultar franquicias, sucursales y productos.
- Modificar stock y nombre de productos, sucursales y franquicias.
- Obtener el producto con mayor stock por sucursal.
- Arquitectura hexagonal con separación de capas.
- Documentación OpenAPI disponible con Swagger.
- Docker y Docker Compose listos para producción local.
Antes de iniciar, asegúrate de tener instalado:
- Git
- Docker
- Docker Compose
- Java 17 y Maven (solo si quieres compilar sin Docker)
Note
Contactame para habilitarlo borisfernandez916@gmail.com
http://13.52.23.84:8080/swagger-ui/swagger-ui/index.html#/
git clone https://github.com/BorisMejia/sucursal.git
cd sucursal
Important
Ejecutar el siguiente comando en la terminal bash si se tiene java en el equipo
./mvnw clean package -DskipTests && docker-compose build --no-cache && docker-compose up
Important
Ejecutar el siguiente comando si no se tiene java
Note
Se debe tener docker instalado
docker-compose up --build -d
http://localhost:8080/swagger-ui/swagger-ui/index.html#/
- Accede a
http://localhost:8080/swagger-ui/swagger-ui/index.html#/
. - Estos son todos los metodos que se pueden probar
POST /franquicias
Body:
{
"nombre": "Franquicia uno"
}
POST /franquicias/{idFranquicia}/sucursales
Body:
{
"id" : "1",
"nombre": "Sucursal uno"
}
POST /franquicias/{idFranquicia}/sucursales/{idSucursal}/productos
Body:
{
"id" : "1",
"nombreProducto": "Producto uno",
"stock": 50
}
PUT /franquicias/{idFranquicia}/nombre
Body:
{
"nombre": "Nuevo nombre franquicia"
}
PUT /franquicias/{idFranquicia}/sucursales/{idSucursal}/nombre
Body:
{
"nombre": "Nuevo nombre sucursal"
}
PUT /franquicias/{idFranquicia}/sucursales/{idSucursal}/productos/{idProducto}/nombre
Body:
{
"nombreProducto": "Nuevo nombre producto"
}
PUT /franquicias/{idFranquicia}/sucursales/{idSucursal}/productos/{idProducto}/stock
Body:
{
"stock": 49
}
DELETE /franquicias/{idFranquicia}/sucursales/{idSucursal}/productos/{idProducto}
Body:
{
204
}
PUT /franquicias/{idFranquicia}/sucursales/{idSucursal}/productos/{idProducto}
Body:
{
Sucursal: Sucursal uno, Producto: Producto tres, Stock: 100Sucursal: Sucursal dos, Producto: Producto dos, Stock: 60Sucursal: Sucursal tres, Producto: Producto uno, Stock: 800
}
GET /franquicias
Body:
{
[
{
"id": "1",
"nombre": "Franquicia uno",
"sucursales": []
}{
"id": "2",
"nombre": "Franquicia dos",
"sucursales": []
}
]
}
}