Episodio 013 — De la terminal al lienzo
Serie: bitácora de ingeniería — caprini.dev
Slug: 013-de-la-terminal-al-lienzo
Resumen: la tarjeta de progreso deja de ser un archivo “al lado del script” y pasa a formar parte del circuito público del sitio. Este episodio nombra el pipeline que une Git, GitLab, Node y Astro en una sola historia: de un git push a un píxel en el hero.
El pipeline Caprini (de punta a punta)
- Commit — alguien empuja cambios a la rama acordada (habitualmente
main) en el proyecto GitLab. - API GitLab —
tracker.mjs(enprojects/001-progress-tracker/) usa un token conread_api, pide el último commit de esa rama y obtiene mensaje, fechas y URL canónica del commit. - Latido JSON — el mismo run serializa un resumen en
src/content/last-activity.jsonpara que el build de Astro tenga metadatos de “última actividad” sin base de datos. - Satori → SVG — con los datos del commit, Satori compone un árbol tipográfico (subset de layout) coherente con BRANDING (void, neón, JetBrains Mono).
- resvg → PNG —
@resvg/resvg-jsrasteriza a 1200×675; el buffer se escribe enpublic/assets/images/comolatest.png(nombre fijo para la web) ylast-progress-card.png(alias legible). Opcionalmente, conPROGRESS_CARD_SNAPSHOT=1, se añade un archivoprogress-card-<ISO>.pngpara archivo histórico. - Astro Home —
src/pages/index.astroreferencia/assets/images/latest.pngen el hero: Astro sirve lo que está bajopublic/tal cual, así que la tarjeta es estática respecto al último ñpm run build` (o la última vez que alguien ejecutó el tracker y volvió a construir).
No hay servidor dinámico en producción para esta imagen: el pipeline es dev-time / CI-time → artefacto en public/ → sitio estático.
Por qué latest.png
Los nombres con marca de tiempo ayudan a auditar o a conservar capturas, pero la Home necesita una ruta estable que no cambie en el código en cada ejecución. latest.png es el contrato: el tracker siempre sobrescribe ese archivo cuando corre; el HTML sigue apuntando al mismo URL.
Cierre
Lo que antes era “salida de consola + JSON + PNG local” ahora es también showcase en la portada: el Pipeline de Caprini — commit, API, Satori, PNG, Astro — queda explícito para humanos y para el agente que lea esta bitácora.