Bygg fullstack oppgavebehandler i Gleam: Ett språk, alle plattformer

Bygg fullstack oppgavebehandler i Gleam: Ett språk, alle plattformer

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

Bygg en fullstack oppgavehåndterer med Gleam: Ett språk, alle plattformer

Drømmen om å skrive kode én gang og kjøre overalt har jaget utviklere i årevis. Vi har prøvd Java applets, Electron, React Native og Flutter. Men kanskje løsningen ikke ligger i rammeverk. Kanskje handler det om å velge riktig språk fra starten.

Her kommer Gleam: et statisk typet språk som kompilerer til Erlang for backend og JavaScript for frontend. Det gir ekte fullstack-utvikling i ett språk. I dag ser vi på praksis med et eksempel: en enkel oppgavehåndterer som viser hva dette kan.

Målet: Ett kodegrunnlag, flere plattformer

De fleste rammeverk lover "skriv én gang, kjør overalt" – men bare for én type deploy. Gleam går lenger. Det kompilerer samme kildekode til ulike runtime-miljøer.

Oppgavehåndtereren vår, Doable, holder det enkelt: lag, les, oppdater og slett oppgaver. Likevel skjuler den en hel arkitektur:

  • JSON HTTP API på Erlang med PostgreSQL
  • Nettleser-frontend med reaktiv tilstand
  • Desktop-apper for Windows, macOS og Linux via Tauri
  • iOS- og Android-apper via Tauri

Alt dette. Samme språk. Samme typer. Samme validering.

Arkitektur: Dev mot produksjon

Slike utviklere jobber

I dev trenger du raske feedback-loops. Docker for database og API, hot-reload for alle fronter, og tester uten rebuild.

Setuppen fikser dette:

  • PostgreSQL i Docker, separate db-er for dev og test
  • Gleam API-server i Docker eller lokalt
  • Én Lustre dev-server med hot reload for nett, desktop og mobil
  • API-proxy løser CORS – alt går via én inngang
  • Integrasjonstester mot routeren med test-db

Rask iterasjon er gull. 30 sekunders ventetid dreper momentum.

Produksjon i praksis

I prod forsvinner kompleksiteten. Alt i Docker-containere. Caddy som enkelt inngangspunkt, proxy til API og filserver for frontend.

Nettklienter henter frontend fra Caddy og slår opp API via proxy. Tauri-apper bundler frontend lokalt, men bruker Tauris HTTP til Caddy-API. Samme app, tilpasset per plattform.

Teknisk oppsett

Backend: Erlangs styrke

API-serveren kompileres til Erlang med Wisp og Mist. Du arver telecom-kvalitet: concurrency, feiltoleranse og distribusjon.

PostgreSQL gir solid relasjonell lagring, som Erlang-folk har stolt på siden 90-tallet.

Delte moduler: Den store gevinsten

Gleams triks er shared-prosjektet – en Gleam-libre som kompilerer til både Erlang og JavaScript. Typer, validering, serialisering – alt delt. Endre en oppgavestruktur, så sprer det seg automatisk.

Ingen typekonflikter mellom front og back. Kompilatoren fanger feil tidlig.

Frontend: Elm-mønster

Nettfronten bruker Lustre med Elm Architecture for UI-tilstand. Kjent for Elm-brukere, gullstandard for testbar kode ellers.

Desktop og mobil følger samme mønster, bare andre mål.

Hvorfor dette teller for neste prosjekt

Fullstack typesikkerhet blir viktigere med kompleksitet. Endringer:

Refactoring uten frykt. Endre db-schema, oppdater shared-typer – kompilatoren peker på alle steder.

Konsistens på tvers av plattformer. Validering én gang i Gleam, kompiler til flere mål.

Raskere onboarding. Ett språk, ett typesystem – ikke tre økosystemer.

Enklere drift. Færre språk, færre deps, færre deploy-triks.

Realiteten

Blir Gleam fremtiden for all web? Neppe. Økosystemet er lite mot TypeScript eller Python – hiring og libs teller.

Men for nye fullstack-prosjekter med fokus på typesikkerhet? Dette kutter bug-kategorier helt.

Eksempelet er enkelt med vilje. Det viser at arkitekturen holder. Skaler opp, filosofien står.

Kom i gang

Læringskurven er reell, men overkommelig. Syntaks ligner JavaScript, Python, Rust. Typer er sterke, men snille mot nybegynnere.

Start med Erlang-backend. Bygg API. Legg til Lustre-frontend og se shared-typer fange bugs. Når du smaker unified fullstack, føles fragmenterte løsninger gamle.

Fremtiden handler kanskje ikke om verktøy per lag. Kanskje om språk som treffer alle lag.


Klar for fullstack Gleam? Sjekk Gleam-dokumentasjonen og tenk på ditt neste prosjekt med typesikker kompilering over plattformer.

Read in other languages:

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