Blog con Elixir y Phoenix: una arquitectura inusual

Fuentes: Building a blog with Elixir and Phoenix | jola.dev

Este artículo detalla la construcción de un blog utilizando Elixir y Phoenix, enfocándose en una arquitectura inusual pero eficiente. La autora, Johanna Larsson, explica su decisión de evitar un enfoque estático, optando por renderizado del lado del servidor con Phoenix para permitir futuras experimentaciones interactivas en el sitio. Aunque podría haberse utilizado LiveView, se eligió la ruta “tradicional” con DeadViews para un control más directo sobre el proceso. La clave del blog reside en NimblePublisher, una herramienta que procesa archivos Markdown y los convierte en módulos Elixir precompilados, eliminando la necesidad de procesamiento en tiempo de ejecución. Esto se traduce en una velocidad de carga notable, como se evidencia en los informes de PageSpeed Insights.

El flujo de trabajo implica organizar las publicaciones por año en directorios Markdown (ej., priv/posts/2025/08-18-ruthless-prioritization.md). NimblePublisher se encarga de analizar el frontmatter de estos archivos, convertirlos a Markdown y generar los atributos del módulo. Se utiliza Makeup para el resaltado de sintaxis en bloques de código. La autora también comparte una solución para integrar clases de Tailwind CSS en el HTML generado, aunque reconoce que existen enfoques más modernos. El frontend se basa en plantillas Phoenix renderizadas del lado del servidor y Tailwind CSS, con un mínimo de JavaScript para funcionalidades como el menú móvil y el topbar.

La implementación incluye una canalización de integración continua (CI) con GitHub Actions para asegurar la calidad del código y Dependabot para gestionar dependencias. El despliegue se realiza a través de Dokploy, una plataforma PaaS auto-alojada basada en Docker Swarm, que automatiza el proceso de construcción y despliegue desde GitHub. La infraestructura se aloja en Hetzner Cloud, destacando su precio competitivo y fiabilidad. Finalmente, se describe la implementación de un feed RSS personalizado. En resumen, el blog representa una solución técnica bien pensada, que prioriza el rendimiento, la flexibilidad y el control sobre el proceso de desarrollo y despliegue.