Alguien reporta una falla con foto y se le hace seguimiento.
Un formulario abierto, pensado para llegar desde un QR pegado en la máquina que se echó a perder, y una cola de mantención detrás de sesión donde el equipo toma cada falla y la cierra.
Corre en sube, que le pone la base de datos, el almacenamiento de archivos, el dominio y el inicio de sesión. La app no trae código de autenticación ni credenciales de nada.
Quien reporta está parado frente a la puerta trabada: puede ser un contratista, una visita, alguien de otro piso. Exigirle una cuenta corporativa para decir "esto está roto" es la forma más segura de que la falla no se reporte nunca. Quien la arregla, en cambio, es del equipo y sí tiene cuenta.
Es el mismo patrón que registro-de-visitas: escritura anónima, lectura autenticada.
Además es el ejemplo que usa almacenamiento de archivos, y ahí hay algo que vale la pena mirar:
await storage.put(key, bytes, photo.type)
const url = await storage.temporaryUrl(key)La app no tiene credenciales del almacenamiento. Le pide un enlace a la plataforma, que lo firma acotado al prefijo de esta app y de ninguna otra. Un enlace por foto, lo que está bien para una cola de mantención y no lo estaría para una galería.
npm install
npm run buildConstruye sin base de datos. Para verlo funcionando hay que desplegarlo:
npm i -g @sube.sh/cli # o usa npx
sube new "Reporte de fallas"
sube deployEl formulario está abierto a internet: cualquiera con el enlace puede crear reportes y subir imágenes. Para un QR dentro de una oficina eso es un problema manejable, y es el precio de que reportar sea fácil. Si lo vas a dejar alcanzable desde fuera, ponle límite de tamaño, límite de frecuencia por IP, o pon la app detrás de una regla de acceso desde la plataforma.
app/page.tsx el formulario abierto
app/seguimiento/page.tsx la cola de mantención, con sesión
src/db/schema.ts una tabla: faults
middleware.ts y next.config.ts los pone la plataforma. AGENTS.md explica
las reglas que un asistente de IA debe respetar al modificar esta app.
MIT.