Listado de proyectos
El visitante puede ver los proyectos marcados como visibles, con stack, descripción y enlaces.
src/pages/index.astroProjectCard.astro81 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.
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 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.tsEl 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.sslExpiresAtRegistro 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.astro¿Cambiar a inglés?
Tu navegador está en inglés. Puedo mostrarte el sitio en ese idioma.