Web/Portfolio Personal
Resumen
Portfolio personal en Astro 5 que impulsa el rendimiento web, la optimización SEO y una experiencia de usuario cuidada. El sitio agrupa artículos técnicos, proyectos personales y servicios profesionales, añadiendo un buscador instantáneo, un panel de métricas, suscripción a newsletter y un conjunto de componentes reutilizables. Con la línea major v4, se implementa la guía de marca v2.0 (paleta Sand desaturada, light mode “Neutral funcional”, contención de color), se rediseña el embudo de captación (formulario con cualificación de lead, packs cerrados con precios, landing /auditoria-web) y se incorporan PWA con offline cache, OG images automáticas y prueba social estructurada. La arquitectura está pensada para ser rápida, accesible y fácil de mantener.
Contexto
Este proyecto es mi carta de presentación como web designer con enfoque performance-first. La web se despliega en Netlify a partir de una rama main protegida; el flujo de trabajo sigue DEV → STAGING → PROD, con revisión en staging mediante autenticación y pruebas automatizadas. Decap CMS opera en modo editorial simple publicando directamente a main con auto-deploy. El repo sigue SemVer y cada versión se documenta mediante notas de lanzamiento públicas. La guía de marca v2.0 se respeta en cada iteración, con modo oscuro por defecto, paleta Charcoal/Sand/Teal desaturada, regla de contención de color (máx. 2 marcas por sección) y Teal restringido a interacción.
Stack
- Astro 5 como framework principal, con rutas estáticas y colecciones de contenido tipadas.
- MDX para posts y páginas enriquecidas.
- TypeScript en todo el código.
- Tailwind CSS 4 y archivos de tokens CSS para colores y espaciados consistentes.
- Fontsource para self-hosting de web fonts (Sora, Inter, JetBrains Mono).
- Netlify para el despliegue (build, Edge Functions y Netlify Functions).
- Netlify Functions para formularios de contacto, newsletter y recolección de RUM.
- Buttondown como proveedor de newsletter (GDPR, doble opt-in).
- @vite-pwa/astro con Workbox para PWA, Service Worker y offline cache.
- satori y sharp para generación de OG images automáticas en build time.
- Core Web Vitals y Real User Monitoring mediante script
rum-core-web-vitals.tsy panel/metrics/rum. - Playwright, @axe-core/playwright y Lighthouse CI para pruebas end‑to‑end, accesibilidad automatizada y presupuestos de rendimiento.
- Vitest con cobertura de tests unitarios (umbral 60%).
- GitHub Actions con workflows segmentados para linting, typecheck, tests unitarios, cobertura, e2e, accesibilidad (axe) y Lighthouse.
- Decap CMS en modo editorial simple (publicación directa a main → auto-deploy).
Resultados (v0.4.1)
- Diseño coherente con la guía de marca: tipografías, espaciados y color.
- UX de contenido: blog con etiquetas, página de tags y tarjetas legibles.
- Legal: Aviso legal, Privacidad, Cookies y Términos publicados.
- DevOps: STAGING con login, despliegues automáticos y PR previews.
Resultados (v0.1.1)
- Sitio navegable y rápido.
- Flujo de versiones automatizado (dev → rc → release).
- Base lista para escalar diseño y contenido.
Resultados (v1.0.10)
- Arquitectura escalable: migración a Astro v4 y adopción de content collections tipadas, con utilidades de contenido reutilizables.
- Diseño modular: nuevo sistema de diseño con tokens y componentes (Hero, ProjectCard, PostCard) que unifican la experiencia visual.
- Blog paginado: navegación organizada con páginas numeradas y páginas de etiquetas con slugificación coherente.
- SEO avanzado: meta canonical, OG/Twitter tags y JSON‑LD para posts; estructura de enlaces amigable y botón “Volver” para mejorar la navegación.
- Accesibilidad y UX: colores y contraste revisados, jerarquías de encabezados lógicas y navegación con teclado optimizada.
Resultados (v2.16.0)
- Cumplimiento y privacidad: implementación de un banner de cookies con gestión granular (analítica y marketing), integración de reCAPTCHA en formularios y actualización de políticas legales.
- Performance y pruebas: se añaden tests end‑to‑end con Playwright y presupuestos de rendimiento con Lighthouse CI en GitHub Actions, además de un script RUM para monitorizar Core Web Vitals en producción.
- UX y accesibilidad: nuevos componentes Callout, FolderTree y QuoteHighlight enriquecen el blog; mejor distribución del contenido y botón para configurar cookies desde el footer; mejoras de contraste y navegación.
- SEO y contenido: migración al dominio canónico adrianmariscal.es, actualización de metadatos y canonical; optimización de imágenes y autogeneración de enlaces en encabezados gracias a remark/rehype; reorganización de artículos y etiquetas.
- Arquitectura y DevOps: refactor de Edge Functions para login protegido en staging, variables de entorno seguras y adopción de GitHub Actions como pipeline principal.
Resultados (v3.55.6)
- Búsqueda instantánea: se añade un buscador en
/searchque indexa posts, proyectos y páginas, facilitando el acceso a contenidos. - Nuevas páginas: se incorporan secciones de Sobre mí y Servicios que describen mi trayectoria y las soluciones que ofrezco.
- UI Kit modular: implementación de componentes accesibles (botones, tarjetas, badges, inputs, alertas) basados en tokens de diseño; mejora de consistencia y reusabilidad.
- Métricas RUM integradas: panel
/metrics/rumpara consultar Core Web Vitals y latencias reales; envío opcional a endpoint propio según preferencias de cookies. - Flujo DevOps maduro: workflows separados en GitHub Actions para lint, typecheck, unit tests, pruebas e2e y auditorías de rendimiento; CI se ejecuta en ramas dev, staging y main:.
- Despliegue optimizado: configuración de Netlify con redirecciones SEO, cabeceras de seguridad, plugin Lighthouse y protección de staging mediante Edge Functions.
- Contenido ampliado: más de 25 artículos técnicos publicados en MDX, con imágenes localizadas y enlaces automáticos; mejora de SEO mediante meta tags, OG/Twitter y JSON‑LD.
Resultados (v4.30.5)
- Guía de marca v2.0 completa: paleta Sand desaturada (#E2CC96, #C9B07A, #F0ECE4), light mode “Neutral funcional” sin amarillo, regla de contención de color (máx. 2 marcas por sección), Teal exclusivamente interactivo, logo SVG en navbar y footer, botones y CTAs auditados contra especificación de diseño; ratios de contraste verificados con fórmula WCAG 2.1 (docs/contraste-v2.md).
- PWA instalable: Service Worker con Workbox (NetworkFirst para HTML, CacheFirst para assets), página /offline, manifest con iconos generados desde logo SVG; sitio instalable en Chrome/Edge.
- Embudo de captación rediseñado: formulario de contacto con campos de cualificación de lead (URL, stack, objetivo, plazo, presupuesto); /services con packs Corrección/Optimización/Excelencia con precios y descripciones completas; landing /auditoria-web con schema.org FAQPage y anatomía SEO-first.
- Prueba social estructurada: sección de testimonios con componente tipado, flag draft para control de publicación, variable de entorno por contexto (producción vs staging) y plantilla de consentimiento documentada.
- Blog enriquecido: tabla de contenidos auto-generada (≥3 H2, sticky en desktop), suscripción a newsletter vía Buttondown (GDPR, doble opt-in) en posts y footer, OG images automáticas por página (satori + sharp).
- SEO reforzado: meta titles keyword-first en todas las páginas, schema.org Person + ProfessionalService/LocalBusiness + BreadcrumbList con breadcrumb visual, hero con estadísticas performance-first (referencia a Salesforce reubicada en About/Services).
- Web fonts self-hosted: migración a Fontsource (~115 KB subset latin), eliminando 2 orígenes externos de Google Fonts CDN.
- DevOps y calidad: CSP completa sin unsafe-inline, axe-core/playwright en CI (falla en violaciones critical/serious), cobertura unitaria ≥60% (Vitest), Lighthouse PWA como regress guard (≥0.85), notificación por email del formulario verificada.
- Corrección: múltiples parches CSP (v4.30.1–v4.30.5) para compatibilidad con Decap CMS, scripts inline de Astro y precache del Service Worker; fix ToC en Chrome 131+ y navegación offline con Workbox.
Roadmap corto
- Analítica avanzada: explorar integración con paneles de FinOps o dashboards para visualizar costes de nube y rendimiento.
- Validación de paleta v2.0: nueva ronda de feedback rápida (2–3 personas) para confirmar que los nuevos Sand resuelven la percepción de saturación en condiciones reales de pantalla.
- RSS feed: distribución complementaria a newsletter para lectores técnicos que prefieran agregadores.