Costruisci un Task Manager Full-Stack con Gleam: Un Solo Linguaggio per Ogni Piattaforma
Crea un Task Manager Full-Stack con Gleam: Un Solo Linguaggio per Tutti i Target
Da anni i developer inseguono l'idea di scrivere codice una volta e deployarlo ovunque. Java applet, Electron, React Native, Flutter: tutti tentativi validi. Ma se la chiave non fosse un framework, bensì la scelta del linguaggio giusto fin dall'inizio?
Ecco Gleam: linguaggio tipizzato staticamente che compila su Erlang per il backend e JavaScript per il frontend. Risultato? Uno sviluppo full-stack davvero unificato. Oggi vediamo come funziona con un esempio concreto: un'app per gestire task chiamata Doable.
L'Idea: Un Codice, Infiniti Deploy
Non si tratta di promesse vuote. Gleam prende lo stesso codice sorgente e lo compila per runtime diversi. Doable è essenziale: crea, leggi, modifica, cancella task. Niente fronzoli. Eppure nasconde una pila completa:
- API HTTP in JSON su Erlang con PostgreSQL
- Frontend web reattivo nel browser
- App desktop per Windows, macOS e Linux con Tauri
- App mobile iOS e Android, sempre via Tauri
Tutto condiviso. Stesso tipo system. Stessa logica di validazione.
Architettura: Dev e Prod a Confronto
Sviluppo Veloce
In fase di sviluppo conti i feedback rapidi. Docker per DB e server API. Hot reload per tutti i frontend. Test di integrazione senza rebuild continui.
Setup pulito:
- PostgreSQL in Docker, DB separati per dev e test
- API Gleam in Docker o locale
- Lustre dev server per hot reload su web, desktop e mobile
- Proxy API per saltare i problemi CORS
- Test diretti sul router con DB di test
Risultato? Cambi istantanei, zero attese snervanti.
Produzione Semplice
In prod tutto gira in container Docker. Caddy fa da ingresso unico: reverse proxy per API Gleam e file server per il frontend compilato.
Browser? Scarica asset da Caddy e chiama API tramite proxy. Desktop e mobile con Tauri? Bundlano il frontend locale ma puntano all'API via plugin HTTP. Stesso codice, delivery ottimizzato.
Lo Stack Tecnico nel Dettaglio
Backend: Solidità Erlang
L'API compila su Erlang con Wisp e Mist. Non è solo un framework web: erediti la robustezza di Erlang, usata da decenni in telecom per concurrency e fault tolerance.
PostgreSQL aggiunge persistenza relazionale affidabile.
Codice Condiviso: Il Vero Trucco
Il genio di Gleam sta nel progetto shared: libreria multi-target per Erlang e JavaScript. Tipi, validazioni, serializzazione: tutto unico. Cambi un tipo task? Si aggiorna ovunque automaticamente.
Addio mismatch tra frontend e backend. Il compilatore blocca errori prima del runtime.
Frontend: Pattern Elm
Sul web usi Lustre con l'Elm Architecture: gestione stato prevedibile e testabile. Se conosci Elm, è casa tua. Altrimenti, impara: è lo standard per UI solide.
Desktop e mobile? Stessi pattern, target diversi.
Perché Controllare per il Tuo Prossimo Progetto
Con app sempre più complesse, la type safety full-stack fa la differenza:
Refactor senza paura. Cambi uno schema DB? Aggiorni i tipi shared e il compilatore indica tutti i fix da fare.
Consistenza cross-platform gratis. Una sola validazione, compilata per tutti i target.
Onboarding rapido. Un linguaggio, un ecosistema. Niente caos multi-tech.
Ops facili. Meno dipendenze, strategie deploy uniformi, sorprese azzerate.
La Realtà Pratica
Gleam rivoluzionerà tutto lo sviluppo web? Non subito. L'ecosistema è piccolo rispetto a TypeScript o Python: conta per librerie e assunzioni.
Ma per progetti greenfield full-stack? Elimina bug interi alla radice. Doable è semplice di proposito: dimostra che scala da zero. Aggiungi complessità, la filosofia resta: compila una volta, valida ovunque, deploy multiplo.
Come Iniziare
Curioso? La curva di apprendimento c'è, ma è accessibile. Sintassi ispirata a JavaScript, Python, Rust. Tipi potenti, ma non ostili.
Parti dal backend Erlang. Costruisci l'API. Aggiungi Lustre e shared types. Prova l'unità full-stack: tornare al vecchio modo frammentato sembra preistoria.
Il futuro full-stack non è scegliere tool per layer diversi. È un linguaggio che copre tutti i layer.
Pronto per Gleam full-stack? Dai un'occhiata alla documentazione ufficiale e pensa al tuo prossimo progetto con type safety su ogni piattaforma.