Sin backend permanente
La recolección se ejecuta en GitHub Actions y produce un snapshot JSON incluido en el artifact de Pages.
Estudio de caso arquitectónico · engineering intelligence
El Repo Control Center nació de un problema operativo sencillo: a medida que crece el número de repositorios, CI, delivery, releases, seguridad, paquetes y actividad quedan demasiado dispersos para formar una visión confiable del conjunto. La solución recolecta estas evidencias fuera del navegador, hace explícito cuándo la información está incompleta y publica un snapshot estático para consulta.
El dashboard es de solo lectura. Los tokens utilizados en la recolección permanecen en GitHub Actions y nunca se envían a la SPA publicada.
Problema
Build, deployment, release, actividad, alertas, paquetes y elementos abiertos existen en superficies y API diferentes. Abrir cada repositorio funciona mientras el conjunto es pequeño; después, la propia búsqueda de contexto se convierte en un costo operativo.
El desafío no era crear otro dashboard visual. Era construir un lenguaje común para interpretar el estado de los proyectos sin convertir la ausencia de datos en una falla ni requerir infraestructura permanente solo para agregar señales que cambian con poca frecuencia.
Restricciones y atributos de calidad
La recolección se ejecuta en GitHub Actions y produce un snapshot JSON incluido en el artifact de Pages.
La SPA consume únicamente datos estáticos. Los tokens y permisos quedan restringidos al entorno de automatización.
Cada repositorio informa una recolección completa, parcial o no disponible y una confianza derivada de la cobertura de las fuentes.
Las consultas opcionales pueden fallar sin impedir la publicación del resto del portafolio; la degradación permanece explícita.
Decisiones arquitectónicas
El collector Node.js consulta las API durante el workflow, pagina los resultados, limita la concurrencia y normaliza las evidencias antes de publicarlas.
Trade-off: la actualización es periódica, no en tiempo real.
El JSON publicado desacopla la SPA de las API autenticadas y convierte la recolección en un contrato de lectura reproducible.
Trade-off: el estado mostrado representa el último workflow exitoso.
La interfaz ofrece filtros, búsqueda, detalles por repositorio y lectura agregada sin requerir un servicio de aplicación en ejecución.
Trade-off: las rutas detalladas usan hash y el contenido depende del snapshot publicado.
complete, partial y unavailable describen la observabilidad de la recolección; la salud del repositorio sigue siendo una clasificación distinta.
Trade-off: la UI necesita comunicar incertidumbre en vez de resumir todo en un único color.
CI, quality, security, mutation, delivery, release, Pages y maintenance cumplen funciones distintas; solo la señal correcta debe influir en build y delivery.
Trade-off: las heurísticas necesitan un override cuando los nombres no expresan la intención.
Dependabot, code scanning, el workflow de seguridad y OpenSSF Scorecard se presentan por separado. La falta de acceso reduce la confianza, no se convierte en una afirmación de seguridad.
Trade-off: la lectura es más honesta, pero menos simplificada.
Flujo
Trade-offs y límites
El cron actualiza aproximadamente una vez por hora. Esto es suficiente para el mantenimiento del portafolio, pero no reemplaza el monitoreo operativo de producción.
Los deployments externos a GitHub pueden no aparecer; la versión queda vacía cuando no existe una asociación confiable con la entrega.
Actions, Deployments y alertas de seguridad pueden exigir permisos adicionales. La ausencia se informa como pérdida de confianza.
Las métricas de 30 días se recalculan sobre el estado actual. Una tendencia temporal exige persistir snapshots anteriores.
Los nombres de workflows fuera de las convenciones pueden quedar como desconocidos. La configuración por repositorio funciona como override explícito.
Algunos headers y comportamientos de hosting no son controlados por la aplicación y deben tratarse como responsabilidad de la plataforma.
Evidencias públicas
Lectura arquitectónica
El principal aprendizaje del proyecto no es “cómo crear un dashboard”. Consolidar señales de ingeniería exige preservar la diferencia entre ausencia, falla de recolección, evidencia negativa y evidencia positiva. Sin eso, una interfaz sencilla puede producir una interpretación incorrecta del portafolio.
Al hacer explícitas la cobertura y la confianza, Repo Control Center trata la calidad de la propia observación como parte del dominio: una decisión que reduce diagnósticos falsos y mantiene útil la solución incluso cuando no todas las fuentes están disponibles.