Listado de proyectos
El visitante puede ver los proyectos marcados como visibles, con stack, descripción y enlaces.
src/pages/index.astroProjectCard.astro97 requerimientos funcionales agrupados por módulo, con prioridad, estado real de implementación y su origen en el código. 93 de 97 ya están implementados en producción. Filtra por estado o prioridad, o busca por ID, título o ruta.
No hay requerimientos que coincidan con los filtros.
El visitante puede ver los proyectos marcados como visibles, con stack, descripción y enlaces.
src/pages/index.astroProjectCard.astroPágina individual por proyecto con metadata estructurada (JSON-LD), breadcrumbs y pestaña de observabilidad si tiene monitor asociado.
src/pages/projects/[slug].astroEl visitante puede enviar un mensaje que queda asociado a un cliente (si el email coincide) y visible en el CRM.
src/pages/api/contact.tsVista pública con uptime de 30 días, incidentes activos y latencia en tiempo real (EKG) por servicio monitoreado.
src/pages/statussrc/pages/api/statusSecciones públicas /tools y /notes con artículos técnicos y mocks de herramientas internas.
src/pages/toolssrc/pages/notesListado público de certificaciones vigentes/expiradas y línea de tiempo de hitos educativos.
src/pages/certificationsEvolutionTimeline.astroJSON-LD, sitemap, RSS, notificación IndexNow y manifest de PWA en cada publicación.
src/pages/rss.xmlscripts/indexnowVersión pública sin credenciales del panel admin con datos ficticios, para que cualquiera recorra el producto sin cuenta.
src/pages/demo.astrosrc/lib/demo.tsAsyncLocalStorage en src/db/index.tsEl visitante descarga el CV desde /contact mediante un token de un solo uso (ventana de 5 min) emitido tras capturar una huella de dispositivo.
src/pages/api/cvcv_downloadsRutas 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.
src/lib/education-paths.tseducation_lab_progressPá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.
src/pages/paginas-web.astroLa página de contacto ofrece, además del formulario, un enlace para agendar una llamada sin intercambio previo de correos.
src/pages/contact.astroLas 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.
src/i18n/ (configroutingformatlocalizebilingualesen)src/pages/en/src/content/notes/{esen}/src/lib/notes.tssrc/middleware.tsUn 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.
src/components/LanguageSuggestModal.astroPá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.
src/pages/capacitacion-ia.astrotraining_programs (isPublic)src/lib/capacitacion/repo.tsRepositorio 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.
src/pages/capacitacion/src/lib/capacitacion/{repomarkdowntipos}.tstraining_resourcesLos 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.
src/lib/capacitacion/{accesspase}.tssrc/pages/api/capacitacion/acceso.tstraining_access_codesTRAINING_ACCESS_SECRETEl mismo cuestionario antes y después de la formación, entregado por enlace firmado por cohorte, con informe de delta por grupo y por tema.
docs/plan-capacitacion.md (Fase 2); reutilizaría training_access_codes como identificador de cohorte.La página /automatizaciones publica lo que corre solo: los workflows de GitHub Actions con el resultado de su última corrida en main, las tareas programadas con horario, origen y qué se pierde si dejan de correr, y los automatismos que dispara el propio tráfico.
src/pages/automatizaciones.astrosrc/data/automatizaciones.tscron_runsCualquier visitante escribe un dominio y recibe doce diagnósticos en vivo contra ese sitio: alcanzabilidad, certificado TLS, redirección a HTTPS, cabeceras de seguridad, DNS, vencimiento del dominio por RDAP, robots.txt, sitemap.xml, meta SEO, peso y recursos de la página, Lighthouse vía PageSpeed Insights y una heurística de accesibilidad. Cada prueba llega por streaming en cuanto termina, con estado (pass/warn/fail/info), resumen y detalle.
src/lib/diagnostics.ts (la bateríasin dependencias externas: fetch + node:tls + node:dns)src/pages/api/lab/site-check.ts (endpoint público)src/pages/lab/site-check/index.astro y su cascarón en src/pages/en/Demostración pública en /lab/fingerprint: se crea una sala con un enlace corto y su QR, cada dispositivo que entra aporta su huella (señales del recolector propio más el hash de FingerprintJS para contrastar precisión) y el tablero /lab/fingerprint/[room]/board las va mostrando en vivo, con los bits de entropía de cada una y el contador de revisitas que enseña lo que hace de esto una demostración y no una lámina: volver en incógnito o borrando cookies no estrena dispositivo, incrementa el contador del mismo.
src/lib/fingerprint.ts (salas y registro)src/pages/api/lab/fp/src/pages/lab/fingerprint/ y su cascarón en src/pages/en/tablas fp_rooms y fp_devicesEl administrador inicia sesión con su cuenta de GitHub; solo los logins en la allowlist obtienen acceso.
auth.config.tssrc/lib/auth.tsTodas las rutas /admin y /api/admin exigen sesión válida; sin sesión, redirige a login.
src/middleware.tsEl administrador ve las sesiones activas por dispositivo (IP, user-agent, última actividad) y puede revocarlas.
src/pages/admin/sessions.astroadmin_sessionsEl administrador puede cerrar su sesión desde cualquier página del panel.
src/pages/api/authAlta, edición y archivo de proyectos con estado, fechas, stack, cliente asociado y visibilidad pública.
src/pages/admin/projectsprojectsAlta y edición de clientes con datos de contacto y notas internas.
src/pages/admin/clients.astroclientsEl administrador ve, marca como leídos y responde mensajes recibidos por el formulario público.
src/pages/admin/messages.astromessagesRegistro de llamadas, reuniones, notas y tareas pendientes por cliente/proyecto, con recordatorios (nextAction/dueDate).
src/pages/admin/seguimiento.astrointeractionsDocumento de alcance por proyecto con objetivo, presupuesto estimado/acordado, horas e ítems (requerimiento/entregable/exclusión).
src/pages/admin/briefingsbriefingsbriefing_itemsRegistro de contactos (cliente, PM, dev, QA, diseño) asociados a un proyecto.
project_contactsRegistro de decisiones técnicas por proyecto con contexto, decisión, justificación y alternativas consideradas; opcionalmente públicas.
project_adrsBiblioteca 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.
src/lib/present/*src/pages/admin/presentacionessrc/pages/present/[sessionId]src/pages/remote/[sessionId]src/pages/[pin]decks/deck_slidesPanel ú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.
src/pages/admin/capacitacion/src/pages/api/admin/capacitacion/training_programstraining_resourcestraining_access_codesAlta de cobros por proyecto/cliente con estado (cobrado/pendiente/proyectado) y fecha de vencimiento.
src/pages/admin/finances.astrofinancesRegistro 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.
src/pages/admin/costs.astroproject_servicessrc/lib/pnl.tsSecrets de servicios (API keys, tokens) cifrados con AES-256-GCM en reposo, revelados on-demand vía fetch autenticado.
src/lib/crypto.tsproject_services.secretsRegistro cifrado de variables de entorno por ambiente (producción/staging/dev) para cada proyecto gestionado.
project_env_varsDescubrimiento automático de fecha de expiración vía RDAP y alerta por email/push antes del vencimiento.
src/pages/admin/domains.astrosrc/lib/domains.tsDesde 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].
src/pages/cobrar.astrosrc/pages/c/[code].astrosrc/lib/cobros*.tsEl 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.
src/pages/mis-pagos.astrosrc/lib/mis-pagos.tsDesde /admin/cuentas-cobro se crean, emiten, anulan y descargan en PDF cuentas de cobro de persona natural no responsable de IVA, con serie propia CC-AAAA-NNN, valor en letras, leyendas normativas y datos bancarios.
src/pages/admin/cuentas-cobro/src/pages/api/admin/cuentas-cobro/src/lib/cuentas-cobro.tssrc/lib/cuentas-cobro-db.tssrc/lib/cuenta-cobro-pdf.tsmigración 0030El formulario de una cuenta de cobro nueva permite crear el deudor ahí mismo, y avisa de forma accionable cuando la ficha elegida no tiene NIT: deja crear el borrador, no deja emitirlo, y enlaza al sitio donde se completa.
src/pages/admin/cuentas-cobro/index.astro/api/admin/clientsLa cuenta de cobro calcula retención en la fuente (honorarios y servicios, según sea declarante o no) y ReteICA sobre el subtotal, aplicando la base mínima en UVT, y muestra el neto estimado sin alterar el bruto cobrado.
src/lib/cuentas-cobro.ts (computeRetentionsparseCuentaCobroConfig)/admin/settingsapp_settingsEl panel suma lo emitido en el año en cuentas de cobro y lo compara contra las 3.500 UVT del art. 437 par. 3 ET, con aviso al 70 %, alerta al 90 % y advertencia explícita al superarlo.
src/lib/cuentas-cobro.ts (topeIva)src/lib/cuentas-cobro-db.ts (topeIvaDelAnio)/admin/cuentas-cobroEl 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.
src/lib/portal/*portal_sessionssrc/pages/portalNinguna 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.
src/lib/portal/projects.tsrequirePortalSession()El cliente ve sus facturas con estado y vencimiento, y descarga cada una en PDF.
src/pages/portal/facturassrc/pages/api/portal/facturasHilos de conversación por proyecto entre el cliente y el administrador, con estado de leído.
src/pages/portal/mensajessrc/pages/admin/portalEl cliente ve los documentos compartidos y el avance por hitos de su proyecto.
src/pages/portal/documentossrc/pages/portal/index.astroEl administrador puede ver el portal como un cliente concreto para dar soporte, sin poder escribir nada en su nombre.
src/middleware.tssrc/pages/admin/portalLa información del portal (notificaciones, mensajes, facturas, salud del proyecto) se refresca sola mientras la pestaña está visible, sin recargar.
src/lib/portal/live.ts · src/pages/api/portal/live.ts · script de PortalLayout.astroEl 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.
src/lib/portal/activity.ts · src/components/portal/ActivityFeed.astro · src/pages/portal/actividad.astro · src/pages/admin/portal/actividad.astroUn tenant marcado como demo permite recorrer el portal sin ser cliente, con re-siembra automática por cron.
src/pages/api/portal/demo.tssrc/pages/api/cron/portal-demo-reseed.tsEndpoint 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.
src/lib/portal/health.tssrc/pages/api/portal/health.tsscripts/register-portal-monitor.mjsChecks HTTP periódicos (cron externo) por servicio, con umbral de latencia degradada y validación de contenido esperado.
monitorssrc/pages/api/cronAgrupación automática de caídas consecutivas (primer fallo → primer éxito) con causa y duración.
monitor_incidentsCálculo de SLI/SLO configurable (objetivo % y ventana en días) por monitor, con presupuesto de error restante.
src/pages/admin/lab/slo.astrosrc/lib/slo.tsAlertas push (ntfy.sh) ante caídas de monitores, vencimientos de dominio y anomalías de seguridad.
src/lib/notify.tsCaptura de Core Web Vitals de visitantes reales, sin PII, para calcular p75 públicos.
web_vitalssrc/lib/vitals.tsVerificación periódica de expiración de certificado TLS por monitor con badge de alerta.
monitors.sslExpiresAtCada cron que pasa la autenticación deja una fila con el job, si salió bien, cuánto tardó y un resumen corto del resultado; /automatizaciones muestra la última corrida de cada uno.
src/lib/cron-runs.ts (conRegistroregistrarCronRun)cron_runssrc/pages/api/cron/*Registro de runs de CI (GitHub Actions) con tests, cobertura, health check post-deploy y rollback automático si falla.
ci_runssrc/pages/admin/lab/pipeline.astroCobros con clave de idempotencia única, máquina de estados sin retrocesos y bitácora de eventos de webhook (incl. duplicados y fuera de orden).
paymentspayment_eventssrc/lib/payments.tsInyecció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.
chaos_flagssrc/lib/chaos.tsBitácora de experimentos del LAB con resultado esperado vs. real, como evidencia para sustentación.
lab_experimentsEscenarios 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.
lab/k6/carga.js (ítem 5 del checklist)lab/k6/estres.js (ítem 6)lab/k6/lib/perfil.jssrc/pages/api/lab/proceso.tsAná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.
security_findingssrc/lib/lab/findings.ts.github/workflows/security.yml y a11y.ymlMedición de la calidad real de la suite mediante mutantes (Stryker) y congelado de la forma de las respuestas de API con esquemas Zod.
stryker.config.jsonsrc/lib/lab/mutation.tssrc/lib/contracts.tsEscaneo dinámico baseline contra el deployment de preview, con el reporte JSON ingerido como hallazgos del LAB junto a los de SAST.
.github/workflows/dast.ymlparseZapReport en src/lib/lab/findings.tsClasificación de cada request por firmas conocidas (OWASP) de forma síncrona y no bloqueante en el middleware.
src/lib/security/sensor.tsclassify.tsBloqueo (manual o automático) de IPs con TTL obligatorio y respuesta 403 seca; sin bloqueos eternos.
blocked_ipssrc/lib/security/blocklist.tsLímite de tasa por clave respaldado en base de datos, que sobrevive a redeploys (reemplaza la implementación en memoria).
rate_limit_bucketssrc/lib/security/ratelimit-durable.tsAgregados horarios/diarios de eventos de seguridad por categoría para tendencias y detección de anomalías.
security_rollupsDetector estadístico (z-score sobre baseline de 30 días) de picos, patrones nuevos, anomalías geográficas y ráfagas de error.
security_anomaliessrc/lib/security/anomaly.tsVista en /admin con eventos, anomalías y acciones de respuesta (bloquear IP, marcar revisado).
src/pages/admin/security.astrosrc/pages/api/admin/security.tsEl 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.
src/lib/security/blocklist.ts (blockIpEscalated)src/middleware.tsSnapshot periódico de la base de datos subido a Vercel Blob vía cron, más creación manual desde el panel.
src/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)Configuración clave-valor (tasas de cambio, moneda base) editable desde el panel.
app_settingssrc/pages/admin/settings.astroRequerimientos, 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.
src/pages/docssrc/data/documentacion.tstesting.tsvyv.tsiteraciones-portfolio.tsPá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.
src/pages/docs/pipeline-en-vivo.astrosrc/lib/lab/pipeline-live.tssrc/pages/api/lab/pipeline-live.tsLos 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.
src/pages/docs/diagrama-bpmn.astrosrc/pages/docs/bpmn-imprimible.astrosrc/data/bpmn.tssrc/lib/bpmn-layout.tssrc/components/Bpmn{DiagramShape}.astroscripts/export-bpmn.mjsLa 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.
src/pages/docs/diagrama-{desplieguecomunicacionactividadescomponentes}.astrosrc/data/{desplieguecomunicacionactividadescomponentes}.tssrc/lib/uml-{deploymentcommunicationactivitycomponent}.tssrc/components/uml/*.astroPanel 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.
src/pages/admin/aprendizaje.astrosrc/lib/skills.tssrc/data/track-dotnet.tsskill_tracks/skill_sessions/skill_milestonessrc/pages/api/admin/skills/*Panel admin con el historial completo de descargas del CV (IP, user-agent, referer) y detección de revisitas del mismo dispositivo.
src/pages/admin/lab/cv-downloads.astrocv_downloadsLa 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.
scripts/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.tsPá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).
src/data/reportes-pruebas.tssrc/pages/docs/reportes-pruebas.astroPá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.
src/pages/docs/diagrama-red.astrosrc/data/red.tssrc/lib/red-layout.tssrc/components/uml/NetworkDiagram.astroPantalla 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.
src/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.tsLa 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.
src/pages/sustentacion.astrosrc/lib/sustentacion/escena.tssrc/data/sustentacion-escena.tssrc/data/sustentacion-datos.jsonsrc/pages/admin/sustentacion.astroLa pantalla /presentacion monta el bundle exportado en un iframe y /remote lo gobierna desde el teléfono: siguiente, anterior, salto directo y la posición real del mazo, con el estado compartido por /api/presentacion.
src/pages/presentacion.astrosrc/pages/remote/index.astrosrc/pages/api/presentacion.tssrc/lib/presentacion/mapa.tssrc/lib/presentacion/estado.tsLos tres beats del mazo que proyectan una página viva dentro de un iframe (la demo del portal, /status, /engineering) se pueden recorrer desde el teléfono: dos botones ↑/↓ que ocupan el sitio de la rejilla de saltos mientras la diapositiva tenga algo que desplazar, con repetición al mantener pulsado y una barra de progreso de la página proyectada.
src/lib/presentacion/desplazamiento.tssrc/pages/api/presentacion.tssrc/pages/presentacion.astrosrc/pages/remote/index.astroPágina /docs/planteamiento con el planteamiento del problema (síntomas observados con su evidencia y su consecuencia, causas que los explican y delimitación en las tres dimensiones), la justificación por ejes y los objetivos general y específicos, cada objetivo con su indicador, su meta, su forma de verificación y los requisitos que lo realizan.
src/data/planteamiento.tssrc/pages/docs/planteamiento.astrodocs/planteamiento-del-problema.mdVentana del portátil del ponente que separa los dos papeles que /presentacion hacía a la vez: conduce el mazo (descubre su forma, publica la posición real y obedece el destino que pide el celular) y además deja TOCAR la página viva que enmarca la diapositiva, que es lo que permite entrar a la demo del portal y navegar el panel delante del jurado. Suma teclado propio (flechas, espacio, Home/End y dígitos para salto directo), rueda del ratón que publica el desplazamiento donde lo publica el pulgar, espejo de la URL del iframe para que la sala vea la página que se está tocando, espejo del PUNTERO (el elemento que el ponente señala con el ratón dentro de esa página se enciende igual en cada equipo de la sala, con su hover, el panel de detalle de las cards de /engineering y una flecha dibujada encima), espejo del ECO (lo que el ponente ESCRIBE en la página viva y el resultado que le contesta el servidor cuando no pasa por una navegación, que es el caso del diagnóstico público de un sitio en /lab/site-check), y una isla flotante con el cronómetro de la sustentación.
src/pages/present-admin.astrosrc/pages/presentacion.astro (el seguidorque aplica espejo y puntero)src/lib/presentacion/lienzo.tssrc/lib/presentacion/espejo.tssrc/lib/presentacion/puntero.tssrc/lib/presentacion/eco.tssrc/pages/lab/site-check/index.astro (implementa el contrato ESPEJO_VIVO)src/components/CardPopover.astrosrc/lib/presentacion/cronometro.tssrc/lib/presentacion/desplazamiento.tssrc/pages/api/presentacion.tsConsola retráctil en la ventana que conduce la presentación, con tres estados que se ciclan con la tecla P y se recuerdan entre recargas: oculto (el mazo a pantalla completa), barra (una franja con reloj, desvío, posición, título de la diapositiva y estado del enlace) y consola (guion completo con la nota de la diapositiva siguiente, ritmo contra las duraciones estimadas del guion, rejilla de saltos sobre la forma real del mazo, URL de la página viva con atajos para volver a la demo del portal, /status o /engineering, botones de desplazamiento y tres acciones de rescate). Sustituye la necesidad de mirar el celular mientras se conduce desde el portátil: hasta aquí el guion y la rejilla solo existían en /remote.
src/lib/presentacion/panel.ts (modosíndice del mazoritmosalud del enlace y atajos)src/pages/present-admin.astro (la vista y el cableado)src/lib/presentacion/guion.tsAl llegar a la última diapositiva del mazo, la ventana que conduce la presentación (/present-admin) espera cinco segundos y navega sola a /presentacion-end, la página que se comparte cuando la sustentación ya terminó. Como el mazo acaba en la lámina de preguntas, lo que queda en pantalla durante el turno de preguntas es el cierre con los enlaces a la documentación, las cifras del kanban y el contacto. La cuenta se cancela con cualquier movimiento que salga de la última diapositiva y avisa antes de irse.
src/lib/presentacion/cierre.ts (las reglas)src/pages/present-admin.astro (el temporizador y el aviso)src/lib/presentacion/panel.ts (el estado cerrando de la salud del enlace)La página pública /presentacion-end reúne, para mandarla DESPUÉS de la sustentación en vivo, los enlaces a la documentación del proyecto, un corte de en-números sacado en vivo del kanban y un cierre con contacto. Traducida a /en, indexable y con la navegación normal del sitio.
src/pages/presentacion-end.astrosrc/pages/en/presentacion-end.astrosrc/i18n/es.tssrc/i18n/en.ts (presentacionEnd)src/i18n/routing.ts (TRANSLATED_ROUTES)src/lib/present/reserved.ts¿Cambiar a inglés?
Tu navegador está en inglés. Puedo mostrarte el sitio en ese idioma.