Saltar al contenido
Todos los proyectos

Proyecto personal · v1.0.0 · 2026

Esta web

Mi web personal: quién soy, qué he hecho y cómo trabajo. En tres idiomas, sin cookies y con la infraestructura a la vista.

  • React 19
  • TypeScript
  • Vite
  • Tailwind CSS 4
  • React Router
  • Cloudflare Workers
  • Playwright
Esta web con el modo «Ver la infraestructura» activado: la retícula de 12 columnas superpuesta, la trayectoria con etiquetas de tecnologías y una nota técnica sobre el componente Timeline.

Por qué la creé

Quería un sitio propio donde explicar quién soy, qué he hecho y cómo trabajo, más allá de un currículum. Y quería que la propia web fuera un proyecto real, publicado y con las decisiones documentadas.

Cómo está organizada

  • Contenido separado del diseño: todos los textos, en tres idiomas, viven en src/data.
  • Componentes reutilizables (components/), secciones de la portada (sections/) y páginas (pages/).
  • Cada página se prerenderiza en HTML estático durante el build y React la hidrata en el navegador. Así los buscadores y las vistas previas de enlaces ven el contenido real.

Decisiones de diseño

  • Concepto de «cuaderno de trabajo»: papel crema, tinta y un solo color de acento, el rojo minio.
  • Tres tipografías con roles fijos: Newsreader para los títulos, IBM Plex Sans para el texto e IBM Plex Mono para fechas y etiquetas.
  • Un índice que marca la sección en la que estás mientras haces scroll.
  • El modo «Ver la infraestructura», que superpone la retícula y explica cómo está montada la web.

Accesibilidad

  • Contrastes comprobados según WCAG 2.2 AA (mínimo de 4,9:1 en el texto).
  • Navegación completa con teclado, enlace para saltar al contenido y foco siempre visible.
  • aria-current en el índice de secciones y en el selector de idioma.
  • Animaciones desactivadas con prefers-reduced-motion.
  • Textos alternativos en todas las imágenes informativas.

Seguridad y rendimiento

  • Sin cookies, analítica ni peticiones a terceros.
  • Cabeceras de seguridad con una CSP estricta: ningún script ni estilo inline.
  • Imágenes en AVIF y WebP con dimensiones explícitas, y tipografías alojadas en la propia web.

Pruebas

  • Playwright a 375, 768 y 1440 px: navegación, índice activo, enlaces, teclado y consola del navegador.
  • Lighthouse para medir rendimiento, accesibilidad, buenas prácticas y SEO.
  • Scripts propios que comprueban enlaces rotos y contrastes.

Dificultades técnicas

  • Hidratar páginas prerenderizadas sin desajustes, sobre todo la 404, que puede servirse en cualquier URL.
  • Mantener una CSP estricta obliga a evitar atributos style y scripts inyectados.
  • El primer despliegue en Cloudflare fallaba: sin configuración, Wrangler modificaba el build de Vite. Se resolvió con un wrangler.jsonc explícito.
  • Las animaciones ligadas al scroll dejaban invisibles las secciones fuera de pantalla en capturas e impresiones. Ahora el contenido siempre es visible.

Qué he aprendido

  • Cómo funciona el despliegue automático de Cloudflare desde GitHub: cada push genera un build nuevo y, si pasa, una versión nueva de la web.
  • La experiencia de representarme a mí mismo: decidir qué cuento de mí, cómo lo cuento y cómo quiero que se vea.