Skip to main content

Requisitos previos

Asegúrate de tener instaladas las siguientes herramientas antes de comenzar:
  • Docker 24 o superior
  • Docker Compose v2 (incluido en Docker Desktop)
  • Git
En macOS y Windows, Docker Compose ya viene incluido con Docker Desktop. En Linux, instálalo con sudo apt install docker-compose-plugin o equivalente para tu distribución.

Levantar el sistema

1

Clona el repositorio

Descarga el código fuente en tu equipo:
git clone https://github.com/BrianSilenT/MejoraReciboCaducidades.git
cd MejoraReciboCaducidades
2

Inicia todos los servicios

Construye las imágenes y levanta el stack completo con un solo comando:
docker-compose up --build
Esto arranca tres contenedores:
ContenedorServicioPuerto
perecederos-dbPostgreSQL 155432
perecederos-backendSpring Boot API8080
perecederos-frontendReact (Nginx)3000
El backend usa SPRING_JPA_HIBERNATE_DDL_AUTO=none, por lo que el esquema de la base de datos debe existir previamente. Si es la primera vez que usas el proyecto, aplica el script de creación de tablas a la base de datos caducidadesdb antes de levantar el backend.
Para ejecutar los servicios en segundo plano agrega la bandera -d: docker-compose up --build -d
3

Verifica que los servicios estén en línea

Espera unos segundos a que Spring Boot termine de iniciar (busca el mensaje Started en los logs) y luego comprueba que el backend responde:
curl http://localhost:8080/api/dashboard
Si el servicio está listo, recibirás una respuesta JSON con el resumen del inventario.
4

Accede al frontend

Abre tu navegador y navega a:
http://localhost:3000
Verás la pantalla de inicio de sesión de la aplicación.
5

Inicia sesión

El sistema usa autenticación simulada guardada en localStorage. Ingresa cualquier valor en los tres campos del formulario:
  • Usuario — nombre del operador (por ejemplo, admin)
  • Password — cualquier valor (no se valida)
  • Tienda — nombre de la tienda (por ejemplo, Sucursal Norte)
Haz clic en Entrar. El sistema redirige automáticamente al Dashboard y guarda el usuario y nombre de tienda para mostrarlos en la cabecera.
No existe un servidor de autenticación real. Los datos se almacenan en localStorage del navegador y se usan solo para personalizar la interfaz. Para producción, deberás integrar un mecanismo de autenticación real.
6

Explora el Dashboard

Una vez dentro, el Dashboard muestra tres métricas principales obtenidas de GET /api/inventario/alertas:
  • Caducados — productos con fecha de caducidad vencida que requieren retiro inmediato.
  • Próximos a caducar — productos con 10 días o menos antes de su caducidad.
  • Total alertas críticas — suma de todos los productos que superan el umbral de alerta según su categoría.
Desde aquí puedes navegar a cualquier módulo usando los botones de acceso rápido: Inventario, Recepción Proveedores, Recepción CEDIS y Control RPC.

Primera llamada a la API

Puedes interactuar directamente con el backend sin usar el frontend. A continuación se muestran algunos ejemplos con curl:
curl http://localhost:8080/api/dashboard
Respuesta de ejemplo para GET /api/dashboard:
{
  "caducados": 3,
  "porCaducar": 18,
  "inventarioTotal": 1340,
  "recepcionesCedis": 28,
  "recepcionesProveedor": 14,
  "rpcPendientes": 7
}
El endpoint /api/dashboard devuelve un objeto JSON plano — no usa el envoltorio ApiResponse. Consulta la Referencia de API para ver todos los campos.
La base URL completa de la API es http://localhost:8080/api. Consulta la Referencia de API para ver todos los endpoints disponibles con sus parámetros y respuestas.

Parar los servicios

Para detener todos los contenedores:
docker-compose down
Para detenerlos y eliminar también los volúmenes (esto borra los datos de la base de datos):
docker-compose down -v

Próximos pasos

Dashboard

Conoce en detalle cómo funciona el panel de alertas y sus reglas de negocio.

Inventario

Aprende a gestionar el stock y a interpretar las alertas de caducidad.

Recepciones CEDIS

Registra la carga de camiones y filtra por departamento o división.

API Reference

Explora todos los endpoints REST para automatizar flujos o integrar el sistema.