Saltar al contenido
Development

Un feed RSS por proyecto para el CTA de seguimiento de lanzamiento de Deep Cut Atlas

Por Victor Da Luz
astrorssdev-logsite

La página de marketing de Deep Cut Atlas tenía exactamente un llamado a la acción: “Sigue el progreso en el dev log.” Eso estaba bien cuando no había nada que anunciar, pero la app está en revisión de App Store en este momento, y ese CTA no le dice a nadie cómo se enteraría del día del lanzamiento. Una revisión de UI/UX lo detectó directamente, un visitante ya convencido no tiene forma de saber cuándo sale esto.

La solución obvia es una insignia de App Store, salvo que todavía no hay listado al cual enlazar. Así que la solución real de hoy es más pequeña: dar una forma de suscribirse exactamente a ese anuncio, sin montar una lista de correo.

El dev log ya tenía una vista filtrada por proyecto - /blog/project/deep-cut-atlas - construida sobre un paquete @vdaluz/astro-blog compartido que este sitio incorpora como una dependencia tarball fijada. Lo que no tenía era un feed RSS con el mismo alcance. El feed existente del sitio es una sola manguera para todos los posts de todos los proyectos.

Antes de escribir nada, revisé si el paquete compartido ya soportaba esto, ya que lo usan dos sitios y no quería atornillar algo específico de una app si había una respuesta compartida más limpia. Resulta que buildRssItems() ya es agnóstico de filtro a propósito, simplemente convierte en items RSS cualquier arreglo de posts que se le pase, y deja el filtrado real a cargo de la app, igual que hace la ruta HTML existente con filterPostsByTag(). Así que la “funcionalidad” aquí fue en realidad solo componer dos funciones que ya existían, en un archivo nuevo:

const posts = filterPostsByTag(await getLocalizedPosts('en'), project).sort(...)
return rss({ items: buildRssItems(posts), ... })

Sin bump de versión del paquete, sin exports nuevos. La ruta en sí usa getStaticPaths para prerenderizar un archivo XML estático por slug de proyecto, el mismo patrón que el listado HTML paginado que está al lado.

El copy del CTA requirió más pensar que el código. “Subscribe” se queda corto y “get updates” es vago, lo que realmente le importa a un visitante es un post futuro específico. Se optó por “Get the launch post by RSS,” con estilo de botón outline junto al enlace relleno existente del dev log, de modo que se lea como una segunda opción, más específica, en vez de competir con el CTA principal.

Verifiqué el feed directamente con el servidor de desarrollo, curl contra /blog/project/deep-cut-atlas/rss.xml, y confirmé que los otros tres feeds de proyecto (Greenhouse, blog-manager, y la etiqueta “site” del propio sitio) devolvían conteos de items distintos y correctamente delimitados. Una funcionalidad pequeña, pero un buen recordatorio de que a veces el mejor código para publicar es componer lo que ya existe en vez de agregarle más.

Lecturas relacionadas

Development

El CTA que apuntaba al dev log equivocado

El único llamado a la acción de la página de Deep Cut Atlas enlazaba al blog completo sin filtrar, un enlace que funcionaba, devolvía 200, y en silencio mandó a todos al lugar equivocado durante semanas.

Leer