Control de Caducidades
Fechas de caducidad convertidas en un estado claro para cada producto.
Control de
Caducidades
Cada producto perecedero tiene una fecha en el frente y otra en el almacén. En lugar de mostrar fechas, el sistema las compara y devuelve un estado concreto para cada producto.
En uso en restaurantes reales
Qué entra de cada producto
Fecha de frente, fecha de almacén, cajas en almacén y fechas que esperan detrás.
calculateProductStatus()server/services/productStateService.js- ¿Hay fecha en el almacén?
- ¿Coincide con la del frente?
- ¿Es la última caja? ¿Hay más detrás?
Frente y cambia
La fecha del frente y la del almacén no coinciden.
Frente y agota
No hay fecha en el almacén.
Sin clasificar
Misma fecha y más de una caja.
Abierto y cambia
Misma fecha, última caja y más fechas detrás.
Abierto y agota
Misma fecha, última caja y nada detrás.
Horizonte de aviso
Lo que cae dentro,
avisa.
Desde hoy hasta dentro de 14 días, ambos incluidos. Lo demás espera.
Datos históricos de la demo, a 20/10/2026.
Cómo lo pensé
Problema
Los productos perecederos están repartidos entre el frente y el almacén. Si nadie revisa las fechas a tiempo, caducan.
Restricciones
Varios restaurantes en la misma infraestructura, personas con responsabilidades distintas y una conexión que no siempre está.
Decisión
Que el sistema calcule el estado de cada producto a partir de sus fechas y su stock, y avise desde hoy hasta dentro de 14 días, ambos incluidos.
Salas y roles
Una plataforma.
Salas estancas.
Cada restaurante solo ve y recibe lo suyo.
Tres roles, alcances que se estrechan. Ninguna sala ve los datos de otra.
Cuando se va la red
La conexión se corta.
El trabajo continúa.
Solo en el módulo de caducidades.
Con red
Cada cambio llega al servidor al instante.
Sin red
La app sigue respondiendo. Cada cambio se guarda en una cola local (IndexedDB) y espera.
Vuelve la red
La cola se envía al servidor, que la reparte al resto del restaurante.
Captura real, 20/10/2026
Así se ve en el restaurante.
Cada grupo de la lista es uno de los estados que salen del prisma:
- Frente y cambia
- Frente y agota
- Abierto y cambia
El “1” junto al título es Danonino: el único producto dentro de la ventana de aviso.

- Tecnologías
- React, Node.js, MongoDB y Socket.IO
- Mi papel
- Producto y especificación. Implementación con Claude Code.
Uso privado en restaurantes; sin acceso público.




