Crea un gestor de tareas full-stack con Gleam: un solo lenguaje para todas las plataformas

Crea un gestor de tareas full-stack con Gleam: un solo lenguaje para todas las plataformas

Abr 30, 2026 gleam full-stack development type safety web architecture backend development frontend development cross-platform apps erlang lustre tauri

Crea un gestor de tareas full-stack con Gleam: Un solo lenguaje para todas las plataformas

Durante años, los desarrolladores hemos soñado con escribir código una vez y ejecutarlo en cualquier lugar. Hemos probado con Java applets, Electron, React Native o Flutter. Pero ¿y si el secreto no está en los frameworks? ¿Y si basta con seleccionar el lenguaje adecuado desde el principio?

Aquí entra Gleam: un lenguaje con tipos estáticos que se compila tanto a Erlang para el backend como a JavaScript para el frontend. Esto permite un desarrollo full-stack realmente unificado. En este artículo, vemos cómo funciona en la práctica con un ejemplo concreto: una app para gestionar tareas que muestra todo su potencial.

El objetivo: Un solo código para varios entornos

Hablemos claro. La mayoría de frameworks promete "escribe una vez, ejecuta en cualquier lado", pero solo para un tipo de despliegue específico. Gleam va más allá: toma el mismo código fuente y lo compila para runtimes distintos.

Nuestra app de tareas, Doable, es básica a propósito. Solo crea, lee, actualiza y borra tareas. Pero no te fíes de su simplicidad. Detrás hay una arquitectura completa:

  • API HTTP en JSON con Erlang y PostgreSQL para guardar datos
  • Frontend en navegador con manejo reactivo del estado
  • Apps de escritorio para Windows, macOS y Linux usando Tauri
  • Apps móviles para iOS y Android, también con Tauri

Todo esto. Un mismo lenguaje. Un mismo sistema de tipos. Una misma lógica de validación.

Arquitectura: Desarrollar vs. producción

Cómo trabajamos en desarrollo

En desarrollo, lo clave son los ciclos rápidos de feedback. Docker para la base de datos y el servidor API. Un dev server con hot-reload para todos los frontends. Y tests de integración sin recompilar nada.

El setup lo resuelve así:

  • PostgreSQL en Docker, con bases separadas para dev y tests
  • Servidor API en Gleam: en Docker o local para cambios rápidos
  • Un solo dev server de Lustre con hot-reload para web, desktop y móvil
  • Proxy de API para evitar problemas de CORS: todo pasa por un punto de entrada
  • Tests de integración directos contra el router, con base de datos dedicada

Esto acelera el trabajo. Esperar 30 segundos por cada cambio mata la productividad.

Cómo funciona en producción

Al desplegar, todo se simplifica. Docker lo contiene todo. Caddy actúa como entrada única: hace reverse proxy al servidor API de Gleam y sirve los archivos del frontend compilado.

Lo genial: los clientes web piden el frontend por el file server de Caddy y las API por el mismo proxy. Las apps de Tauri para desktop y móvil incluyen el frontend compilado localmente, pero usan el plugin HTTP de Tauri para llegar a la API de Caddy. Misma app. Entrega optimizada por plataforma.

Desglose del stack técnico

Backend: La solidez de Erlang

El servidor API se compila a Erlang con las librerías Wisp y Mist. No es solo un framework web. Heredas la ingeniería de telecomunicaciones de décadas: concurrencia, tolerancia a fallos y distribución nativa.

PostgreSQL aporta persistencia relacional confiable, probada con Erlang desde los 90.

Código compartido: El verdadero acierto

El genio de Gleam está en el proyecto shared: una librería multi-target que compila a Erlang y JavaScript. Tipos, validaciones, serialización: todo compartido. Cambias una estructura de tarea y se actualiza en todas las plataformas.

Adiós a tipos que no coinciden entre frontend y backend. Adiós a sorpresas de validación. El compilador pilla inconsistencias antes de que fallen en runtime.

Frontend: Patrones de Elm Architecture

El frontend web usa Lustre y sigue la Elm Architecture: un patrón probado para estados UI complejos. Si conoces Elm, te suena. Si no, apréndelo: es el estándar para código frontend predecible y testable.

Desktop y móvil usan los mismos patrones, solo cambian los targets de despliegue.

Por qué importa para tu próximo proyecto

La seguridad de tipos full-stack gana peso en apps complejas. Esto es lo que cambia:

Refactorings sin miedo. Cambias un campo en la base de datos, lo actualizas en los tipos compartidos y el compilador te marca los 47 sitios exactos que tocan. Sin dudas.

Consistencia cross-platform gratis. No traduces validaciones entre TypeScript, Swift o Kotlin. Escribe en Gleam, compila a varios targets.

Onboarding más rápido. Un nuevo dev aprende un lenguaje y un sistema de tipos, no tres ecosistemas distintos. Productividad al instante.

Operaciones simples. Menos lenguajes, menos dependencias, menos estrategias de deploy, menos sorpresas.

La realidad práctica

¿Es Gleam el futuro de todo el desarrollo web? No lo creo. Las comunidades y ecosistemas pesan. Gleam es más pequeño que TypeScript o Python, y eso afecta al contratar o buscar librerías.

Pero para equipos en proyectos nuevos full-stack, donde importan tipos y código unificado, elimina bugs enteros de raíz.

El ejemplo del gestor de tareas es simple a posta. Demuestra que la arquitectura funciona en pequeña escala. Apps reales suman complejidad, pero la filosofía base aguanta: compila una vez, valida en todas partes, despliega en muchas.

Cómo empezar

Si te convence, la curva de aprendizaje es real pero asequible. La sintaxis de Gleam recuerda a JavaScript, Python o Rust. Los tipos son potentes, pero no exigen ser experto el día uno.

Arranca con el backend en Erlang. Monta tu API. Añade Lustre para el frontend y ve cómo los tipos compartidos matan clases enteras de errores. Una vez que pruebas desarrollo full-stack unificado, volver a enfoques fragmentados parece de otra época.

El futuro full-stack no pasa por herramientas distintas por capa. Pasa por un lenguaje que apunte a todas las capas que necesitas.


¿Listo para probar Gleam full-stack? Echa un ojo a la documentación de Gleam y piensa cómo tu próximo proyecto gana con compilación type-safe en todas las plataformas.

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR DE DA ZH-HANS EN