Contratos e interfaces
Al ser un sitio estático no hay API HTTP/gRPC ni subjects NATS. Las "interfaces" son las rutas públicas servidas, los artefactos SEO y el contrato de salud de nginx.
Rutas públicas (HTTP GET, sin autenticación)
| Ruta | Contenido | Evidencia |
|---|---|---|
/ | Redirige a /es/ o /en/ según navigator.language | index.md:6-15 |
/es/, /en/ | Home (hero + features) por idioma | es/index.md, en/index.md, .vitepress/config.mts:97, 142 |
/es/about, /en/about | Sobre mí | es/about.md, en/about.md, config nav :98, 143 |
/es/blog/, /en/blog/ | Índice del blog (tarjetas) | es/blog/index.md, en/blog/index.md, :99, 144 |
/es/blog/ciso-catalizador-negocio | Artículo (EN: /en/blog/ciso-business-catalyst) | es/blog/ciso-catalizador-negocio.md, :109, 154 |
/es/blog/zero-trust-mentalidad | Artículo (EN: /en/blog/zero-trust-mindset) | es/blog/zero-trust-mentalidad.md, :110, 155 |
/es/projects, /en/projects | Proyectos | es/projects.md, en/projects.md, :100, 145 |
/es/contact, /en/contact | Contacto (enlaces mailto/redes) | es/contact.md, en/contact.md, :101, 146 |
/healthz | Health check (texto ok, HTTP 200) | nginx.conf:14-17 |
/sitemap.xml | Sitemap generado por VitePress | .vitepress/config.mts:17-24 |
/favicon.svg, /og-cover.png | Estáticos públicos | public/, .vitepress/config.mts:29, 48 |
URLs limpias: enlaces sin .html, resueltas por nginx con try_files (.vitepress/config.mts:13, nginx.conf:21).
Contrato de salud
GET /healthz→200con cuerpookyContent-Type: text/plain(nginx.conf:14-17). Es el endpoint que Cloud Run / monitorización pueden sondear.
Contratos SEO / metadatos (salida en <head>)
| Artefacto | Detalle | Evidencia |
|---|---|---|
lang global | es-ES | .vitepress/config.mts:11 |
| hreflang | es, en, x-default→/es/ | :39-41 |
| Sitemap | hostname https://www.navarro-bores.com, excluye la raíz | :17-24 |
| OpenGraph | type, url, title, description, image 1200x630, locale + alternate | :44-52 |
| Twitter Card | summary_large_image + título/descr/imagen | :55-58 |
JSON-LD Person | nombre, jobTitle CISO, worksFor TIREA S.A., alumniOf, knowsAbout, sameAs (LinkedIn/GitHub/blueup.es) | :61-81 |
| Keywords | cybersecurity, CISO, Zero Trust, DORA, AML, BlueUP... | :36 |
| Favicon | /favicon.svg | :29 |
Contrato de frontmatter (entrada de contenido)
Un artículo de blog declara en frontmatter: title, description, date (es/blog/ciso-catalizador-negocio.md:1-5). Las home usan layout: home con bloques hero y features (es/index.md:1-43). La raíz usa layout: page (index.md:1-4).
Búsqueda
- Proveedor
local(índice en cliente, sin servicio externo); ES con traducciones de UI (.vitepress/config.mts:121-133), EN por defecto (:166-168).