Byg en fuldstack task manager i Gleam: ét sprog, alle platforme

Byg en fuldstack task manager i Gleam: ét sprog, alle platforme

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

Byg en fuldstack task manager med Gleam: Én kodebase til alle platforme

Drømmen om at skrive kode én gang og køre den overalt har jaget os udviklere i årtier. Vi har prøvet Java applets, Electron, React Native og Flutter. Men måske handler det ikke om rammeværker. Måske handler det om at vælge det rigtige sprog fra starten.

Her kommer Gleam ind. Et statisk typet sprog, der kompilerer til Erlang på backend og JavaScript på frontend. Det giver ægte fuldstack-udvikling i ét sprog. I dag kigger vi på et konkret eksempel: en task manager-app, der viser, hvordan det fungerer i praksis.

Visionen: Én kildekode, flere platforme

De fleste rammeværker lover "skriv én gang, kør overalt" – men kun til specifikke deploymenter. Gleam går videre. Den kompilerer den samme kode til helt forskellige runtime-miljøer.

Vores task manager – lad os kalde den Doable – er simpel. Den håndterer create, read, update og delete på tasks. Men bag den simple CRUD-grænseflade sidder en hel arkitektur:

  • JSON HTTP API på Erlang med PostgreSQL
  • Browser-frontend med reaktiv state
  • Desktop-apps til Windows, macOS og Linux via Tauri
  • Mobil-apps til iOS og Android, også via Tauri

Alt fra samme sprog. Samme typer. Samme validering.

Arkitektur: Dev vs. produktion

Sådan arbejder udviklere

I dev-fasen skal du have hurtig feedback. Docker til database og API. Hot-reload på alle frontends. Integrationstests uden rebuild.

Setuppet er rent:

  • PostgreSQL i Docker – separate db'er til dev og test
  • Gleam API-server i Docker eller lokalt
  • Én Lustre dev-server til hot reload på browser, desktop og mobil
  • API-proxy undgår CORS-problemer – alt går gennem ét indgangspunkt
  • Tests kører direkte mod routeren med test-db

Det booster hastigheden. 30 sekunders ventetid pr. ændring er ren tortur.

Sådan kører produktion

I produktion forsvinder kompleksiteten. Alt i Docker-containere. Caddy som enkelt entry point – proxy til API og filserver for frontend.

Browser-klienter henter frontend fra Caddy og kalder API via proxy. Tauri-apps bundler frontend lokalt, men rammer API via Tauris HTTP-plugin. Samme app, optimeret per platform.

Tekniske komponenter

Backend: Erlangs styrke

API-serveren kompilerer til Erlang med Wisp og Mist. Du arver telecom-styrke: concurrency, fault tolerance og distribution. PostgreSQL sikrer solid relational lagring.

Delte kode: Den store gevinst

Gleams killer-feature er shared-projektet. En multi-target bibliotek til Erlang og JavaScript. Typer, validering, serialisering – alt deles. Ændr en task-struktur, så opdateres alt automatisk.

Ingen type-forskelle mellem front og back. Kompilatoren fanger fejl tidligt.

Frontend: Elm-mønstre

Web-frontend bruger Lustre med Elm Architecture. Predictable UI-state, let at teste. Desktop og mobil følger samme mønster, bare på andre targets.

Hvorfor det betyder noget for dit næste projekt

Fuldstack type-sikkerhed bliver vigtigere, når apps vokser. Her er ændringerne:

Refactoring uden frygt. Ændr et db-felt, opdater shared-typer – kompilatoren peger på alle steder.

Konsistens gratis. Én validering i Gleam, kompileret til alle platforme.

Hurtigere onboarding. Et sprog, ét typesystem – ikke tre økosystemer.

Enklere drift. Færre afhængigheder, færre deployment-typer, færre overraskelser.

Realiteten i praksis

Er Gleam fremtiden for alt web-dev? Sandsynligvis ikke. Økosystemet er mindre end TypeScript eller Python – det tæller for ansættelse og libs.

Men til greenfield fuldstack-apps med fokus på type-sikkerhed? Det fjerner bug-kategorier fra starten.

Task manageren er simpel med vilje. Den beviser, at arkitekturen holder. Komplekse apps tilføjer lag, men princippet står: kompiler én gang, valider overalt, deploy til mange.

Kom i gang

Learning curve? Hanterbar. Syntax ligner JavaScript, Python, Rust. Typerne er stærke, men ikke krævende fra dag ét.

Start med Erlang-backend. Byg API. Tilføj Lustre-frontend og se shared-typer fange bugs. Når du mærker unified fuldstack, føles de gamle metoder forældede.

Fuldstack-fremtiden handler måske ikke om flere værktøjer. Den handler om ét sprog til alle lag.


Klar til fuldstack Gleam? Tjek Gleam-dokumentationen og overvej, hvordan dit næste projekt kan drage fordel af type-sikker compilation på tværs af platforme.

Read in other languages:

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