Volledige Task Manager Bouwen met Gleam: één taal, alle platforms
Full-Stack Task Manager Bouwen met Gleam: Eén Taal voor Alle Platforms
Ontwikkelaars dromen al jaren van code die één keer geschreven wordt en overal draait. Java applets, Electron, React Native, Flutter – we hebben het allemaal geprobeerd. Maar frameworks zijn niet altijd de oplossing. Wat als de juiste taal vanaf het begin het antwoord is?
Gleam maakt het mogelijk. Deze statisch getypeerde taal compileert naar Erlang voor de backend en JavaScript voor de frontend. Zo bouw je écht unified full-stack apps. Vandaag duiken we in een concreet voorbeeld: een simpele task manager die de kracht van Gleam laat zien.
Het Idee: Eén Codebase voor Elk Platform
De meeste frameworks beloven 'write once, run anywhere', maar beperken zich vaak tot één type deployment. Gleam gaat verder. Het compileert dezelfde broncode naar totaal verschillende runtime-omgevingen.
Onze task manager, Doable, houdt het bij de basis: taken aanmaken, bekijken, wijzigen en verwijderen. Simpel, maar krachtig. Onder de motorkap vind je een complete stack:
- JSON HTTP API op Erlang met PostgreSQL als database
- Browser-frontend met reactieve state management
- Desktop-apps voor Windows, macOS en Linux via Tauri
- Mobiele apps voor iOS en Android, ook met Tauri
Alles in dezelfde taal. Dezelfde types. Dezelfde validatie.
Architectuur: Ontwikkelen en Productie in Balans
Snelle Feedback Tijdens Ontwikkeling
Als developer wil je razendsnel itereren. Docker voor de database en API-server. Hot-reload voor alle frontends. Tests zonder alles te herbouwen.
Zo werkt het in de praktijk:
- PostgreSQL in Docker, met aparte databases voor dev en tests
- Gleam API-server lokaal of in Docker
- Eén Lustre dev-server voor hot reload op browser, desktop en mobiel
- API-proxying om CORS-problemen te skippen
- Integratietests rechtstreeks op de router met een test-database
Dit versnelt je workflow. Geen 30 seconden wachttijd per wijziging – dat doodt je productiviteit.
Simpel in Productie
In productie wordt alles Docker-containers. Caddy fungeert als centrale entry point en proxy't naar de Gleam API en een file server voor de frontend.
Browser-clients laden de frontend via Caddy en roepen de API aan via dezelfde proxy. Tauri-apps bundelen de frontend lokaal, maar bereiken de API via Tauri's HTTP-plugin. Optimalisatie per platform, dezelfde app.
De Tech Stack Uitgelegd
Backend: Erlang's Kracht
De API compileert naar Erlang met Wisp en Mist. Je krijgt niet alleen een webframework, maar ook Erlang's bewezen concurrency, fault tolerance en distributie – lessen uit telecom sinds de jaren '90.
PostgreSQL zorgt voor betrouwbare relatieve data-opslag.
Shared Code: Het Echte Voordeel
Gleam's slimmigheid zit in een shared project. Een multi-target library die naar Erlang én JavaScript compileert. Types, validatie, serialisatie – allemaal gedeeld. Wijzig een task-structuur, en het verspreidt zich automatisch.
Geen type-mismatches. Geen verrassingen op runtime. De compiler spot fouten vroeg.
Frontend: Elm-Principes met Lustre
De web-frontend draait op Lustre met Elm Architecture. Voorspelbare UI-state, makkelijk te testen. Kende je Elm al? Dan voel je je thuis. Zo niet: leer het, want het is goud waard voor complexe frontends.
Desktop en mobiel volgen dezelfde patronen, anders verpakt.
Waarom Dit Jouw Volgende Project Verandert
Type safety over de hele stack wordt cruciaal bij groeiende apps. Wat levert het op?
Refactoring zonder angst. Schema wijzigen? Update shared types, compiler wijst de 47 plekken aan.
Consistentie gratis. Valideer één keer in Gleam, compileer naar meerdere targets. Geen kopieerwerk naar TypeScript of Kotlin.
Snellere onboarding. Eén taal, één typesysteem. Makkelijker voor nieuwe devs.
Minder operationele rompslomp. Weinig talen = weinig dependencies, deployments en verrassingen.
De Praktijkcheck
Wordt Gleam dé webtaal? Waarschijnlijk niet. Het ecosysteem is kleiner dan TypeScript of Python – hiring en libraries tellen mee.
Maar voor nieuwe full-stack projecten met focus op types en unified code? Dit wist hele bug-categorieën uit. De task manager is simpel om te bewijzen dat de basis werkt. Schaal op, en de filosofie houdt stand: één keer compileren, overal valideren, veelzijdig deployen.
Aan de Slag
De leercurve is pittig, maar haalbaar. Gleam-syntax leunt op JavaScript, Python en Rust. Types zijn sterk, maar niet overweldigend.
Begin met de Erlang-backend. Bouw je API. Voeg Lustre toe voor frontend en geniet van shared types. Eenmaal ervaren, voelt versnipperde development ouderwets.
Full-stack ontwikkeling draait misschien niet om laag-specifieke tools. Maar om één taal die alle lagen aankan.
Klaar voor Gleam full-stack? Check de Gleam docs en bedenk hoe jouw project wint bij type-safe multi-platform compilatie.