javi.io

Este sitio. Portfolio, blog, historial laboral y CV en formato de sitio estático completamente versionado.

Arquitectura

Astro 6 con colecciones de contenido tipadas por Zod: blog, work, projects y education, cada una en dos idiomas. El sistema de i18n usa rutas sin prefijo para español (/blog/) y prefijo /en/ para inglés (/en/blog/), con translationKey para emparejar traducciones en blog y proyectos.

Algoritmo de skills

El CV incluye una lista curada de skills generada algorítmicamente: cada entrada de trabajo o proyecto declara sus tecnologías y una fecha (última fecha de trabajo en el proyecto). Un algoritmo de decay exponencial con half-life de 3 años acumula un score por skill, filtrando las que no han aparecido en los últimos 5 años y limitando el resultado a las 25 más relevantes.

Generación de CV

pnpm generate:cv genera automáticamente javier-zapata-{lang}-{hash}.pdf y .docx desde el mismo código TypeScript que renderiza /cv en la web. PDF vía Playwright (Chromium headless); DOCX vía la librería docx.

Despliegue

Sitio estático en GitHub Pages via gh-pages. CI con GitHub Actions: lint + build en PR, despliegue automático en push a main.

Metodología

Construido y mantenido íntegramente con Claude Code.

AstroClaude CodeGitHub ActionsGitHub PagesPlaywrightTypeScript