Una aplicación instalada necesita soporte, identificación del equipo y una política definida cuando no puede consultar al servidor. Hay que coordinar instalaciones y mantenimiento, distinguir un fallo de red de una decisión administrativa y comprobar que cada estado pertenece a la instalación correcta. El panel también necesita limitar los datos y acciones al alcance del operador y su organización.
Desarrollé un shell que enrola la instalación, sincroniza configuración firmada y consulta avisos calculados por el servidor antes del lanzamiento. Conserva el último estado disponible dentro de límites temporales y solicita soporte cuando la configuración deja de ser utilizable; los cambios remotos de política se incorporan al sincronizar. El backend sirve el portal de tickets y un panel con permisos por organización, registra acciones operativas y gestiona consentimiento de mantenimiento y retención.
Un Worker con Hono compone rutas públicas, del shell y administrativas. Los servicios de enrolamiento, configuración, ciclos, tickets y directorio encapsulan operaciones; repositorios y Drizzle acceden a D1. El enrolamiento consume el código y crea instalación, ciclo y evento en un lote condicionado para evitar registros huérfanos por reutilización. La configuración y los estados se firman con Ed25519 y se vinculan a la instalación. El shell Go verifica respuestas, utiliza ETag y aplica vigencia, gracia offline y rechazo de políticas anteriores. Su token se guarda con DPAPI y permisos locales restringidos. Cloudflare Access identifica administradores y las membresías determinan rol y organización. El shell presenta soporte y consentimiento de mantenimiento e invoca el ejecutable configurado, conservando la lógica de SIDC en la aplicación existente.
Vitest y D1 con migraciones de prueba cubren enrolamiento concurrente, códigos reutilizados, roles, aislamiento organizacional, configuración firmada, ciclos, tickets, CSRF, abuso y retención. Los tests de tickets comprueban el resumen del catálogo y el rechazo de texto libre enviado al endpoint. En Go hay casos de firmas inválidas, políticas anteriores, reloj atrasado, conservación de estados deshabilitados o revocados offline, gracia y caducidad, caché corrupta y token fuera del JSON. También se prueban aceptación de términos y validación del ejecutable objetivo.
Reúne solicitudes, instalaciones y decisiones de mantenimiento en una sola solución, con un comportamiento offline explícito y trazabilidad operativa. El portal y el panel comparten backend, y la intermediación del lanzamiento mantiene separadas las responsabilidades del soporte y de la aplicación institucional.
- Implementé enrolamiento atómico con códigos de un solo uso y tokens de instalación cuyo hash se almacena en D1
- Vinculé estados y configuración a cada instalación mediante JWT Ed25519, verificando firma, emisor, audiencia y protocolo en el shell
- Definí vigencia y gracia offline, rechazo de políticas anteriores y mitigación del retroceso del reloj local
- Añadí administración por roles y organización con Cloudflare Access y controles CSRF en operaciones de escritura
- Construí tickets con catálogo de incidencias, idempotencia, límites de solicitudes y validación de acción y hostname de Turnstile
- Registré aceptación de términos por versión y huella SHA-256, con reenvío pendiente y limpieza programada de datos operativos