Mike (@mikerb95)CodeByMike

81 requerimientos funcionales agrupados por módulo, con prioridad, estado real de implementación y su origen en el código. 80 de 81 ya están implementados en producción. Filtra por estado o prioridad, o busca por ID, título o ruta.

81
Total req. funcionales
80
Implementados
1
Parciales
0
Planeados
99% en producción
Estado
Prioridad

Sitio público

17/17
RF-001

Listado de proyectos

Implementado

El visitante puede ver los proyectos marcados como visibles, con stack, descripción y enlaces.

Prioridad altasrc/pages/index.astroProjectCard.astro
RF-002

Detalle de proyecto

Implementado

Página individual por proyecto con metadata estructurada (JSON-LD), breadcrumbs y pestaña de observabilidad si tiene monitor asociado.

Prioridad altasrc/pages/projects/[slug].astro
RF-003

Formulario de contacto

Implementado

El visitante puede enviar un mensaje que queda asociado a un cliente (si el email coincide) y visible en el CRM.

Prioridad altasrc/pages/api/contact.ts
RF-004

Página de estado del sistema

Implementado

Vista pública con uptime de 30 días, incidentes activos y latencia en tiempo real (EKG) por servicio monitoreado.

Prioridad altasrc/pages/statussrc/pages/api/status
RF-005

Vitrina de herramientas y notas

Implementado

Secciones públicas /tools y /notes con artículos técnicos y mocks de herramientas internas.

Prioridad mediasrc/pages/toolssrc/pages/notes
RF-006

Certificaciones y evolución académica

Implementado

Listado público de certificaciones vigentes/expiradas y línea de tiempo de hitos educativos.

Prioridad mediasrc/pages/certificationsEvolutionTimeline.astro
RF-007

SEO técnico

Implementado

JSON-LD, sitemap, RSS, notificación IndexNow y manifest de PWA en cada publicación.

Prioridad mediasrc/pages/rss.xmlscripts/indexnow
RF-008

Demo read-only del panel admin

Implementado

Versión pública sin credenciales del panel admin con datos ficticios, para que cualquiera recorra el producto sin cuenta.

Prioridad bajasrc/pages/demo.astrosrc/lib/demo.tsAsyncLocalStorage en src/db/index.ts
RF-009

Descarga de CV con verificación de dispositivo

Implementado

El visitante descarga el CV desde /contact mediante un token de un solo uso (ventana de 5 min) emitido tras capturar una huella de dispositivo.

Prioridad mediasrc/pages/api/cvcv_downloads
RF-010

Rutas de aprendizaje con progreso persistente

Implementado

Rutas educativas ("Linux Real" y otras) con labs cronometrados por nivel (Inicial/Intermedio/Avanzado); el visitante marca cada lab como completado y el progreso persiste entre visitas.

Prioridad bajasrc/lib/education-paths.tseducation_lab_progress
RF-011

Landing comercial de diseño web

Implementado

Página /paginas-web dirigida a negocios locales y emprendedores no técnicos: tres planes con precio visible, preguntas frecuentes y contacto por WhatsApp o formulario.

Prioridad mediasrc/pages/paginas-web.astro
RF-012

Agenda directa de reunión

Implementado

La página de contacto ofrece, además del formulario, un enlace para agendar una llamada sin intercambio previo de correos.

Prioridad bajasrc/pages/contact.astro
RF-013

Versión en inglés del sitio público

Implementado

Las páginas públicas de marca, las notas técnicas, el LAB y el contenido de proyectos existen bajo el prefijo /en con contenido traducido, selector de idioma que conserva la página actual y hreflang recíproco. El español sigue siendo el idioma canónico, sin prefijo.

Prioridad mediasrc/i18n/ (configroutingformatlocalizebilingualesen)src/pages/en/src/content/notes/{esen}/src/lib/notes.tssrc/middleware.ts
RF-014

Sugerencia de idioma no intrusiva

Implementado

Un visitante cuyo navegador declara preferencia por el inglés ve una invitación discreta a cambiar de idioma; la URL nunca cambia de contenido por sí sola.

Prioridad bajasrc/components/LanguageSuggestModal.astro
RF-015

Landing comercial de capacitación en IA

Implementado

Página /capacitacion-ia con los programas de formación publicados desde el panel (formato, nivel, duración, objetivos de aprendizaje, temario desplegable y nota de precio), el proceso de trabajo en cuatro pasos, preguntas frecuentes y contacto por WhatsApp o formulario.

Prioridad mediasrc/pages/capacitacion-ia.astrotraining_programs (isPublic)src/lib/capacitacion/repo.ts
RF-016

Banco público de recursos de capacitación

Implementado

Repositorio general de guías, prompts, plantillas, checklists y presentaciones en /capacitacion, con detalle por recurso en /capacitacion/[slug], contenido en markdown renderizado en el servidor y contador de lecturas.

Prioridad mediasrc/pages/capacitacion/src/lib/capacitacion/{repomarkdowntipos}.tstraining_resources
RF-017

Acceso por código de grupo al material restringido

Implementado

Los recursos marcados "con código" solo aparecen a quien canjeó en /capacitacion/acceso el código que se dicta al cerrar una capacitación; el canje entrega un pase firmado por 30 días, sin correo ni cuenta.

Prioridad mediasrc/lib/capacitacion/{accesspase}.tssrc/pages/api/capacitacion/acceso.tstraining_access_codesTRAINING_ACCESS_SECRET

Autenticación y sesiones

4/4
RF-101

Login con GitHub OAuth

Implementado

El administrador inicia sesión con su cuenta de GitHub; solo los logins en la allowlist obtienen acceso.

Prioridad altaauth.config.tssrc/lib/auth.ts
RF-102

Protección de rutas /admin

Implementado

Todas las rutas /admin y /api/admin exigen sesión válida; sin sesión, redirige a login.

Prioridad altasrc/middleware.ts
RF-103

Gestión de dispositivos/sesiones

Implementado

El administrador ve las sesiones activas por dispositivo (IP, user-agent, última actividad) y puede revocarlas.

Prioridad mediasrc/pages/admin/sessions.astroadmin_sessions
RF-104

Cierre de sesión

Implementado

El administrador puede cerrar su sesión desde cualquier página del panel.

Prioridad mediasrc/pages/api/auth

CRM (proyectos, clientes, seguimiento)

9/9
RF-201

Gestión de proyectos

Implementado

Alta, edición y archivo de proyectos con estado, fechas, stack, cliente asociado y visibilidad pública.

Prioridad altasrc/pages/admin/projectsprojects
RF-202

Gestión de clientes

Implementado

Alta y edición de clientes con datos de contacto y notas internas.

Prioridad altasrc/pages/admin/clients.astroclients
RF-203

Bandeja de mensajes

Implementado

El administrador ve, marca como leídos y responde mensajes recibidos por el formulario público.

Prioridad altasrc/pages/admin/messages.astromessages
RF-204

Seguimiento comercial (interacciones)

Implementado

Registro de llamadas, reuniones, notas y tareas pendientes por cliente/proyecto, con recordatorios (nextAction/dueDate).

Prioridad altasrc/pages/admin/seguimiento.astrointeractions
RF-205

Briefings de cliente

Implementado

Documento de alcance por proyecto con objetivo, presupuesto estimado/acordado, horas e ítems (requerimiento/entregable/exclusión).

Prioridad mediasrc/pages/admin/briefingsbriefingsbriefing_items
RF-206

Contactos por proyecto

Implementado

Registro de contactos (cliente, PM, dev, QA, diseño) asociados a un proyecto.

Prioridad bajaproject_contacts
RF-207

Decisiones de arquitectura (ADRs)

Implementado

Registro de decisiones técnicas por proyecto con contexto, decisión, justificación y alternativas consideradas; opcionalmente públicas.

Prioridad mediaproject_adrs
RF-208

Presentaciones proyectadas con público en sincronía

Implementado

Biblioteca de decks HTML autónomos y sesiones de proyección: pantalla principal, control remoto desde el celular y vista del público en sincronía por PIN corto servido en la raíz del dominio.

Prioridad mediasrc/lib/present/*src/pages/admin/presentacionessrc/pages/present/[sessionId]src/pages/remote/[sessionId]src/pages/[pin]decks/deck_slides
RF-209

Gestión del módulo de capacitación

Implementado

Panel único en /admin/capacitacion para el banco de recursos (alta, edición con previsualización del markdown y borrado), el catálogo de programas y los códigos de grupo (generación, revocación y reactivación), con cifras de material publicado, borradores, lecturas y canjes.

Prioridad mediasrc/pages/admin/capacitacion/src/pages/api/admin/capacitacion/training_programstraining_resourcestraining_access_codes

Finanzas

7/7
RF-301

Registro de ingresos

Implementado

Alta de cobros por proyecto/cliente con estado (cobrado/pendiente/proyectado) y fecha de vencimiento.

Prioridad altasrc/pages/admin/finances.astrofinances
RF-302

Costos y P&L por proyecto

Implementado

Registro de costos de servicios (hosting, dominio, DB, etc.) con quién paga y cuánto se le factura al cliente, para calcular la rentabilidad real.

Prioridad altasrc/pages/admin/costs.astroproject_servicessrc/lib/pnl.ts
RF-303

Bóveda cifrada de credenciales

Implementado

Secrets de servicios (API keys, tokens) cifrados con AES-256-GCM en reposo, revelados on-demand vía fetch autenticado.

Prioridad altasrc/lib/crypto.tsproject_services.secrets
RF-304

Variables de entorno por proyecto

Implementado

Registro cifrado de variables de entorno por ambiente (producción/staging/dev) para cada proyecto gestionado.

Prioridad mediaproject_env_vars
RF-305

Alertas de vencimiento de dominios

Implementado

Descubrimiento automático de fecha de expiración vía RDAP y alerta por email/push antes del vencimiento.

Prioridad mediasrc/pages/admin/domains.astrosrc/lib/domains.ts
RF-306

Cobros de campo por WhatsApp

Implementado

Desde el celular se configura monto y teléfono, se previsualiza el mensaje y se envía por WhatsApp; el cliente paga en la pasarela existente a través de un link corto público /c/[code].

Prioridad altasrc/pages/cobrar.astrosrc/pages/c/[code].astrosrc/lib/cobros*.ts
RF-307

Histórico de pagos del cliente

Implementado

El cliente consulta sus pagos en /mis-pagos mediante un link firmado incluido en el mensaje de WhatsApp; la consulta manual por número muestra datos enmascarados.

Prioridad mediasrc/pages/mis-pagos.astrosrc/lib/mis-pagos.ts

Portal de clientes

10/10
RF-801

Acceso autenticado del cliente

Implementado

El cliente entra a /portal con email y contraseña, con recuperación por email y aceptación de invitación; el sistema de sesiones es propio y no comparte nada con el del administrador.

Prioridad altasrc/lib/portal/*portal_sessionssrc/pages/portal
RF-802

Aislamiento entre clientes (multi-tenant)

Implementado

Ninguna consulta del portal acepta el identificador de cliente desde el request: siempre sale de la sesión y viaja en el WHERE aunque ya haya un id de proyecto.

Prioridad altasrc/lib/portal/projects.tsrequirePortalSession()
RF-803

Facturas y descarga en PDF

Implementado

El cliente ve sus facturas con estado y vencimiento, y descarga cada una en PDF.

Prioridad altasrc/pages/portal/facturassrc/pages/api/portal/facturas
RF-804

Mensajería con el cliente

Implementado

Hilos de conversación por proyecto entre el cliente y el administrador, con estado de leído.

Prioridad mediasrc/pages/portal/mensajessrc/pages/admin/portal
RF-805

Documentos y avance del proyecto

Implementado

El cliente ve los documentos compartidos y el avance por hitos de su proyecto.

Prioridad mediasrc/pages/portal/documentossrc/pages/portal/index.astro
RF-806

Impersonación de soporte read-only

Implementado

El administrador puede ver el portal como un cliente concreto para dar soporte, sin poder escribir nada en su nombre.

Prioridad mediasrc/middleware.tssrc/pages/admin/portal
RF-807

Actualización en vivo del portal

Implementado

La información del portal (notificaciones, mensajes, facturas, salud del proyecto) se refresca sola mientras la pestaña está visible, sin recargar.

Prioridad mediasrc/lib/portal/live.ts · src/pages/api/portal/live.ts · script de PortalLayout.astro
RF-808

Feed de actividad del proyecto

Implementado

El cliente ve una línea de tiempo de lo que ha pasado en sus proyectos (hitos, facturas, mensajes), con filtro por tipo y paginación.

Prioridad mediasrc/lib/portal/activity.ts · src/components/portal/ActivityFeed.astro · src/pages/portal/actividad.astro · src/pages/admin/portal/actividad.astro
RF-810

Portal de demostración

Implementado

Un tenant marcado como demo permite recorrer el portal sin ser cliente, con re-siembra automática por cron.

Prioridad bajasrc/pages/api/portal/demo.tssrc/pages/api/cron/portal-demo-reseed.ts
RF-809

Vigilancia del propio portal

Implementado

Endpoint público de salud que ejerce la cadena real de dependencias del portal, sondeado por el motor de uptime propio para que el portal aparezca en /status como cualquier otro servicio.

Prioridad mediasrc/lib/portal/health.tssrc/pages/api/portal/health.tsscripts/register-portal-monitor.mjs

Observabilidad

6/6
RF-401

Monitoreo de disponibilidad

Implementado

Checks HTTP periódicos (cron externo) por servicio, con umbral de latencia degradada y validación de contenido esperado.

Prioridad altamonitorssrc/pages/api/cron
RF-402

Historial de incidentes

Implementado

Agrupación automática de caídas consecutivas (primer fallo → primer éxito) con causa y duración.

Prioridad altamonitor_incidents
RF-403

SLO / error budget

Implementado

Cálculo de SLI/SLO configurable (objetivo % y ventana en días) por monitor, con presupuesto de error restante.

Prioridad mediasrc/pages/admin/lab/slo.astrosrc/lib/slo.ts
RF-404

Notificaciones push

Implementado

Alertas push (ntfy.sh) ante caídas de monitores, vencimientos de dominio y anomalías de seguridad.

Prioridad mediasrc/lib/notify.ts
RF-405

Web Vitals (RUM)

Implementado

Captura de Core Web Vitals de visitantes reales, sin PII, para calcular p75 públicos.

Prioridad bajaweb_vitalssrc/lib/vitals.ts
RF-406

Certificados TLS

Implementado

Verificación periódica de expiración de certificado TLS por monitor con badge de alerta.

Prioridad bajamonitors.sslExpiresAt

LAB (SENA)

7/8
RF-501

Pipeline CI/CD con rollback

Implementado

Registro de runs de CI (GitHub Actions) con tests, cobertura, health check post-deploy y rollback automático si falla.

Prioridad altaci_runssrc/pages/admin/lab/pipeline.astro
RF-502

Pasarela de pagos con idempotencia

Implementado

Cobros con clave de idempotencia única, máquina de estados sin retrocesos y bitácora de eventos de webhook (incl. duplicados y fuera de orden).

Prioridad altapaymentspayment_eventssrc/lib/payments.ts
RF-503

Chaos engineering

Implementado

Inyección de fallos reales (500, 503, latencia) por ruta con TTL obligatorio y kill-switch de pánico; /admin y /api/auth excluidos por código.

Prioridad mediachaos_flagssrc/lib/chaos.ts
RF-504

Historial de experimentos

Implementado

Bitácora de experimentos del LAB con resultado esperado vs. real, como evidencia para sustentación.

Prioridad bajalab_experiments
RF-505

Pruebas de carga y estrés (k6)

Parcial

Escenarios de carga y estrés contra endpoints críticos: escalera de niveles de concurrencia, punto de quiebre, recuperación tras la saturación y consumo de CPU/heap del proceso.

Prioridad medialab/k6/carga.js (ítem 5 del checklist)lab/k6/estres.js (ítem 6)lab/k6/lib/perfil.jssrc/pages/api/lab/proceso.ts
RF-506

SAST y accesibilidad automatizadas

Implementado

Análisis estático de seguridad (npm audit + CodeQL) y auditoría de accesibilidad (axe-core sobre Playwright) que ingieren sus hallazgos al panel del LAB.

Prioridad mediasecurity_findingssrc/lib/lab/findings.ts.github/workflows/security.yml y a11y.yml
RF-507

Mutation testing y pruebas de contrato

Implementado

Medición de la calidad real de la suite mediante mutantes (Stryker) y congelado de la forma de las respuestas de API con esquemas Zod.

Prioridad bajastryker.config.jsonsrc/lib/lab/mutation.tssrc/lib/contracts.ts
RF-508

DAST con OWASP ZAP

Implementado

Escaneo dinámico baseline contra el deployment de preview, con el reporte JSON ingerido como hallazgos del LAB junto a los de SAST.

Prioridad media.github/workflows/dast.ymlparseZapReport en src/lib/lab/findings.ts

Seguridad (micro-SIEM)

7/7
RF-601

Sensor de requests hostiles

Implementado

Clasificación de cada request por firmas conocidas (OWASP) de forma síncrona y no bloqueante en el middleware.

Prioridad altasrc/lib/security/sensor.tsclassify.ts
RF-602

Blocklist de IPs

Implementado

Bloqueo (manual o automático) de IPs con TTL obligatorio y respuesta 403 seca; sin bloqueos eternos.

Prioridad altablocked_ipssrc/lib/security/blocklist.ts
RF-603

Rate limiting durable

Implementado

Límite de tasa por clave respaldado en base de datos, que sobrevive a redeploys (reemplaza la implementación en memoria).

Prioridad altarate_limit_bucketssrc/lib/security/ratelimit-durable.ts
RF-604

Agregación y rollups

Implementado

Agregados horarios/diarios de eventos de seguridad por categoría para tendencias y detección de anomalías.

Prioridad mediasecurity_rollups
RF-605

Detección de anomalías

Implementado

Detector estadístico (z-score sobre baseline de 30 días) de picos, patrones nuevos, anomalías geográficas y ráfagas de error.

Prioridad mediasecurity_anomaliessrc/lib/security/anomaly.ts
RF-606

Panel de seguridad consolidado

Implementado

Vista en /admin con eventos, anomalías y acciones de respuesta (bloquear IP, marcar revisado).

Prioridad mediasrc/pages/admin/security.astrosrc/pages/api/admin/security.ts
RF-607

Bloqueo escalado con enforcement inline de honeypots

Implementado

El TTL de bloqueo escala con la reincidencia (1h → 24h → 7d) leyendo el contador hits de blocked_ips; un hit a un honeypot bloquea la IP inline en el middleware, sin depender solo del cron de auto-block.

Prioridad altasrc/lib/security/blocklist.ts (blockIpEscalated)src/middleware.ts

Sistema

13/13
RF-701

Backups automáticos

Implementado

Snapshot periódico de la base de datos subido a Vercel Blob vía cron, más creación manual desde el panel.

Prioridad altasrc/lib/backup.tssrc/pages/api/cron/backup.ts (automático)src/pages/api/admin/backup.ts y src/pages/admin/backup.astro (manual y listado)
RF-702

Ajustes de la aplicación

Implementado

Configuración clave-valor (tasas de cambio, moneda base) editable desde el panel.

Prioridad bajaapp_settingssrc/pages/admin/settings.astro
RF-703

Documentación de ingeniería

Implementado

Requerimientos, casos de uso, historias, diagramas UML y BPMN, kanban, guía de testing, verificación y validación, y estado del pipeline en vivo, navegables desde /docs.

Prioridad mediasrc/pages/docssrc/data/documentacion.tstesting.tsvyv.tsiteraciones-portfolio.ts
RF-705

Estado del pipeline en vivo

Implementado

Página pública que muestra el estado real de la última corrida del pipeline etapa por etapa (push, tests, e2e, build, deploy, verificación), en vez de un diagrama estático.

Prioridad bajasrc/pages/docs/pipeline-en-vivo.astrosrc/lib/lab/pipeline-live.tssrc/pages/api/lab/pipeline-live.ts
RF-706

Diagramas BPMN de los procesos de negocio

Implementado

Los cuatro procesos de negocio (cobro de campo, acceso al portal de clientes, respuesta de seguridad y ciclo de monitoreo) modelados en notación BPMN con carriles por participante, compuertas, eventos y temporizadores, más la explicación de los cinco tipos de compuerta y la tabla de tiempos de cada proceso, navegables desde /docs.

Prioridad mediasrc/pages/docs/diagrama-bpmn.astrosrc/pages/docs/bpmn-imprimible.astrosrc/data/bpmn.tssrc/lib/bpmn-layout.tssrc/components/Bpmn{DiagramShape}.astroscripts/export-bpmn.mjs
RF-707

Diagramas UML de despliegue, comunicación y actividades

Implementado

La vista de red del sistema como diagrama de despliegue (nodos «device»/«executionEnvironment», artefactos y caminos de comunicación con protocolo), las cuatro interacciones principales como diagramas de comunicación con numeración decimal, y tres flujos de control internos como diagramas de actividades con particiones, bifurcación concurrente y bucle de reintento. Incluye la corrección de /docs/diagrama-componentes, que era un flowchart de despliegue sin ninguna interfaz declarada, a un diagrama de componentes UML real con conectores de ensamblaje.

Prioridad mediasrc/pages/docs/diagrama-{desplieguecomunicacionactividadescomponentes}.astrosrc/data/{desplieguecomunicacionactividadescomponentes}.tssrc/lib/uml-{deploymentcommunicationactivitycomponent}.tssrc/components/uml/*.astro
RF-708

Tracker de especialización técnica

Implementado

Panel privado que mide la práctica real sobre un stack en aprendizaje (el primero, .NET/C#): registro de sesiones con minutos, tema y bitácora; racha de días consecutivos; meta semanal de horas; temario con hitos por área; logros derivados; y mapa de calor de los últimos seis meses. Multi-track: añadir otra tecnología es una fila, no una migración.

Prioridad bajasrc/pages/admin/aprendizaje.astrosrc/lib/skills.tssrc/data/track-dotnet.tsskill_tracks/skill_sessions/skill_milestonessrc/pages/api/admin/skills/*
RF-704

Historial de descargas del CV

Implementado

Panel admin con el historial completo de descargas del CV (IP, user-agent, referer) y detección de revisitas del mismo dispositivo.

Prioridad bajasrc/pages/admin/lab/cv-downloads.astrocv_downloads
RF-709

Informe de ejecución de pruebas

Implementado

La evidencia medida de la última corrida completa de la suite, publicada en /docs/ejecucion-pruebas: total de pruebas y fallos, duración por nivel (unitario contra integración), distribución logarítmica de tiempos, las 12 pruebas más lentas y la tabla de los archivos con su tiempo individual. Un generador convierte el reporte JUnit de Vitest en una instantánea versionada y, en paralelo, en un informe HTML autocontenido para entregar o proyectar.

Prioridad mediascripts/report-tests.mjssrc/data/ejecucion-pruebas.{jsonts}src/pages/docs/ejecucion-pruebas.astro; consumido también por METRICAS_REFERENCIANIVELES y PIRAMIDE en src/data/testing.ts
RF-710

Referencia de reportes de pruebas

Implementado

Página /docs/reportes-pruebas que documenta qué log emite el runner y en qué formato: los 7 reporters de Vitest (default, verbose, dot, tap-flat, junit, json, html) con la salida real de cada uno, cuáles escriben archivo y cuáles solo consola, la anatomía de un fallo en consola y en XML, y la tabla de equivalencias con el instrumental de Java (Surefire, JaCoCo, PIT).

Prioridad bajasrc/data/reportes-pruebas.tssrc/pages/docs/reportes-pruebas.astro
RF-711

Diagrama de red por zonas de confianza

Implementado

Página /docs/diagrama-red con la topología de producción expresada como zonas de confianza (Internet, perímetro, cómputo, datos gestionados, terceros salientes), los hosts de cada una y los flujos dirigidos entre ellas, cada cruce de frontera con su protocolo, su puerto y la tabla de controles que atraviesa.

Prioridad mediasrc/pages/docs/diagrama-red.astrosrc/data/red.tssrc/lib/red-layout.tssrc/components/uml/NetworkDiagram.astro
RF-712

Control remoto de la sustentación desde el celular

Implementado

Pantalla de mando en /sustentacion/control: avanza y retrocede la presentación desde el teléfono, muestra las notas de narración del beat en curso, el cronómetro contra la duración estimada y un selector para saltar a cualquiera de los doce beats.

Prioridad mediasrc/pages/sustentacion/control.astrosrc/lib/sustentacion/mando.tssrc/lib/sustentacion/control.tssrc/lib/sustentacion/obedecer.tssrc/pages/api/sustentacion/comando.tssrc/pages/api/sustentacion/estado.tssrc/pages/api/sustentacion/guion.ts
RF-713

Escenario proyectado de la sustentación

Implementado

La pantalla que ve el jurado en /sustentacion: grafo de la arquitectura dibujado en canvas 2D que se revela por capas, HUD de la corrida de estrés con la curva real, matriz de trazabilidad a la que vuelan los nodos, demo del portal en vivo dentro de un iframe, pipeline de CI/CD y checklist de entregables. Vestíbulo con el PIN y el QR del público antes de empezar.

Prioridad mediasrc/pages/sustentacion.astrosrc/lib/sustentacion/escena.tssrc/data/sustentacion-escena.tssrc/data/sustentacion-datos.jsonsrc/pages/admin/sustentacion.astro