La herramienta interna que deja de pudrirse
La mesa de aprobaciones es una app versionada, no el fork de un dashboard. La v14 está viva; la v13 a un clic; el diff entre ambas es inspeccionable.
App Engine almacena el árbol de código real de una app, la construye con Vite en el cloud, congela cada publish como versión inmutable y sirve el bundle a cualquier superficie host. No widgets — aplicaciones.
Cada app es un proyecto React real — src/main.jsx, componentes JSX, contratos JSON-schema, un manifest. App Engine almacena el árbol, corre el build de Vite del lado del servidor y produce un bundle ESM con las dependencias de runtime externalizadas: React, MUI y los SDKs los inyecta la página host, no viajan en cada bundle.
Publicar congela una versión: manifest, rutas, contratos y snapshot del código, inmutables una vez construida. El rollback es apuntar a una versión anterior — no un rebuild, no una plegaria. El flip del puntero activo es atómico.
Las apps declaran contratos — JSON Schemas de entrada y salida — y eso las hace componibles: un workflow puede lanzar una app, entregarle un payload y recibir salida validada cuando el humano termina. Los launch modes cubren launcher, fullscreen, embedded, task y workflow.
{
"name": "approval-desk",
"kind": "hitl",
"entry_route": "/",
"supported_launch_modes": [
"launcher", "embedded", "task", "workflow"
],
"contracts": {
"input": "contracts/input.schema.json",
"output": "contracts/output.schema.json"
}
} La mesa de aprobaciones es una app versionada, no el fork de un dashboard. La v14 está viva; la v13 a un clic; el diff entre ambas es inspeccionable.
La misma app sirve embebida en un portal, lanzada desde una task e invocada por un workflow — porque sus bordes los definen contratos, no copy-paste.
La versión nueva se porta mal en producción. Apuntas a la versión anterior. Los usuarios recargan. Listo.