● Proyecto · MES de planta

KAVANA Manufacturing: el parte de producción, en la tablet del puesto y sin depender del wifi

Antes de usar IA, en 2023, hice con MIT App Inventor una app para uso personal con la que registraba mi producción en una de las empresas donde trabajaba como operario. Kavana Manufacturing es lo que aquella idea llegó a ser.

Tecnologías: React, NestJS, PostgreSQL e IndexedDB en la tablet. Demo pública con una planta de ejemplo.

3
Roles con su propio flujo: operario, supervisor y administrador
Sin red
El parte se guarda en la tablet y se envía al volver la conexión
OEE
Por puesto, calculado con los partes reales del turno
QR
Para subir desde el móvil la foto de una incidencia
El origen

Por qué construí esto

De aquella primera app me llevé que una herramienta que el operario no usa no mejora nada. Por eso este proyecto empieza por la pantalla del puesto: registrar el trabajo tiene que ser rápido, sin manual y el operario puede seguir registrando sin Wi-Fi; los partes se sincronizan cuando vuelve la conexión.

Es un MES: órdenes de fabricación, partes de trabajo, paradas con su motivo, incidencias y OEE. El operario ve las órdenes de su puesto y apunta cada tramo de trabajo. El supervisor ve en qué está cada puesto y por qué ha parado. La oficina recibe el dato ya registrado, sin tener que pasarlo a limpio. La planta de ejemplo es de aperitivos a propósito: mi sector es el metal, y ese ya lo cubre Steelworks. Aquí quería comprobar que el mismo sistema sirve en una planta que no conozco desde dentro.

La primera app de registro de producción, hecha en 2023 con MIT App Inventor, abierta en un móvil
La app en un turno

Así se usa en planta

Capturas de la demo publicada, tomadas el 10 de octubre de 2026 con una planta de ejemplo: una línea de extrusión de aperitivos. Los datos son inventados.

Lista de órdenes del puesto del operario, con su estado y cantidad
1. El operario entra y ve solo las órdenes de su puesto, con su estado y la cantidad pedida.
Panel del operario para registrar un tramo de producción
2. Registra cada tramo de trabajo: hora de inicio y fin, producción buena y defectos. Arriba ve si está conectado y cuántos partes le quedan por enviar.
Qué resuelve

Lo que cambia en el puesto y en la oficina

📶

Sigue funcionando sin red

Cada parte se guarda primero en la propia tablet y se envía en orden cuando vuelve la conexión. La lista de órdenes del puesto también queda guardada, para seguir trabajando con el wifi caído.

⏸️

Paradas con su motivo

Un tramo puede ser de producción o de parada, y la parada lleva su motivo. El supervisor sabe qué puesto paró y por qué sin tener que ir a preguntarlo.

📊

OEE calculado, no estimado

Disponibilidad, rendimiento y calidad de cada puesto, calculados en el servidor con los partes reales del turno, no a ojo al final de la semana.

📷

Incidencias con foto

El operario abre una incidencia desde su puesto y sube la foto con el móvil escaneando un QR. El supervisor la sigue en un tablero hasta cerrarla.

🏭

Varias plantas, datos separados

Cada empresa ve solo sus propios datos. La separación la impone la base de datos, no solo el código de la aplicación.

✅

Se comprueba antes de publicar

Cada cambio pasa una revisión automática en GitHub: estilo, tipos, pruebas y pruebas en navegador contra la aplicación real.

Criterio aplicado, no solo código

Tres decisiones que salen de la planta

📶 Primero en la tablet, luego al servidor

En una nave el wifi se cae. Una conexión en directo con el servidor deja al operario sin poder registrar; guardar primero en el dispositivo no. ADR-003. ADR →

🔁 Un parte reenviado no cuenta dos veces

Al recuperar la red, la tablet puede reenviar un parte que ya había llegado. El servidor lo reconoce y no lo duplica ni le muestra al operario un error falso. ADR-008. ADR →

🔒 Cada planta, aislada en la base de datos

Si dos empresas comparten el sistema, un fallo en el código no puede enseñar los datos de una a la otra. Por eso el aislamiento lo aplica PostgreSQL. ADR-001 y ADR-012. ADR →

El flujo completo

Cómo viaja un parte de producción

Operario (tablet del puesto) │ elige su orden y registra el tramo ▼ Tablet (IndexedDB) │ el parte queda guardado aunque no haya red ▼ Servidor (NestJS + PostgreSQL) │ valida, evita duplicados y separa cada planta ▼ Supervisor y oficina estado de cada puesto · paradas · incidencias · OEE
Con honestidad

Lo que todavía no está probado

Demo en vivo

Pruébalo ahora

🏭 La demo

Entra con un clic, sin usuario ni contraseña. Como operario ves el puesto; como supervisor, la planta entera.

Entrar como operario → Entrar como supervisor → Entrar como administrador →

Abrir la demo →

💻 Código y decisiones

Repositorio público con el código, las decisiones de diseño explicadas por escrito y la documentación técnica.

Ver en GitHub →

¿Quieres ver más?

Este es uno de los siete proyectos del portfolio. Cada uno nace de un problema real de planta o de reparto.