Tworzymy pełnostackowy menedżer zadań w Gleam: jeden język, wszystkie platformy
Task Manager w Gleam: Jeden język na backend, frontend i mobile
Marzenie o pisaniu kodu raz i uruchamianiu wszędzie dręczy programistów od lat. Próbowaliśmy z Javą, Electronem czy Flutterem. A co, jeśli sekret tkwi nie w frameworkach, tylko w dobrze dobranym języku?
Poznaj Gleam. Statycznie typowany język, który kompiluje się do Erlanga na backend i JavaScript na frontend. Dzięki temu budujesz pełny stack w jednym stylu. Dziś sprawdzimy to na prostym przykładzie: aplikacji do zarządzania zadaniami.
Cel: Ten sam kod na wszystkich urządzeniach
Chodzi o coś więcej niż obietnice frameworków. Gleam bierze twój kod źródłowy i generuje wersje pod różne środowiska uruchomieniowe.
Nasza apka, nazwijmy ją Doable, to podstawy: dodawanie, przeglądanie, edycja i usuwanie zadań. Proste, ale pokazuje cały stos:
- API HTTP z JSON na Erlangu z bazą PostgreSQL
- Frontend w przeglądarce z reaktywnym stanem
- Aplikacje desktopowe na Windows, macOS i Linux przez Tauri
- Aplikacje mobilne na iOS i Android, też z Tauri
Jeden język. Jeden system typów. Jedna logika walidacji.
Architektura: Jak działa dev i produkcja
Rozwój: Szybki feedback to podstawa
W codziennej pracy liczy się błyskawiczna reakcja na zmiany. Docker na bazę i serwer API, hot reload na wszystkich frontendach, testy bez przebudowy.
Oto setup:
- PostgreSQL w Dockerze – osobne bazy na dev i testy
- Serwer Gleam API lokalnie lub w kontenerze
- Lustre dev server z hot reloadem dla webu, desktopu i mobile
- Proxy API omija problemy z CORS – wszystko przez jeden punkt
- Testy integracyjne prosto na routerze z bazą testową
Dzięki temu nie tracisz czasu. 30 sekund na restart? To tortura.
Produkcja: Prostota na całego
W releasie wszystko ląduje w Dockerze. Caddy jako brama: proxy do API i serwuje pliki frontendu.
Frontend w przeglądarce pobiera assets przez Caddy i API też. Desktop i mobile z Tauri pakują frontend lokalnie, ale łączą się z API przez wtyczkę HTTP. Optymalnie na każdą platformę.
Co kryje się pod maską
Backend: Siła Erlanga
API kompiluje się do Erlanga z bibliotekami Wisp i Mist. Dostajesz gotową maszynę do obsługi ruchu, błędów i skalowania – dziedzictwo telekomów.
PostgreSQL to solidna relacyjna baza, sprawdzona z Erlangiem od lat 90.
Magia shared code
Geniusz Gleama to biblioteka shared. Kompiluje się na Erlang i JS. Typy, walidacja, serializacja – wszystko wspólne. Zmiana w strukturze zadania? Kompilator zaktualizuje każdy cel.
Żadnych rozbieżności typów. Żadnych błędów "u mnie działa".
Frontend: wzorzec Elm
Web używa Lustre z architekturą Elm. Przewidywalny stan UI, łatwe testy. Znasz Elm? Super. Nie znasz? Warto ogarnąć – to standard.
Desktop i mobile idą tym samym tropem.
Dlaczego warto to rozważyć
W dużych apkach typy na full stack to game changer:
Refaktoring bez strachu. Zmieniasz pole w schemacie? Shared typy i kompilator wskażą wszystkie miejsca.
Jedna walidacja wszędzie. Bez kopiowania kodu między TypeScriptem, Swifem czy Kotline.
Szybski start zespołu. Jeden język zamiast trzech ekosystemów.
Mniej operacyjnego bólu. Mniej zależności, strategii deploymentu i niespodzianek.
Realia w praktyce
Gleam nie zastąpi wszystkiego. Ekosystem mniejszy niż TypeScript czy Python – trudniej o devów i biblioteki.
Ale dla nowych projektów full stack, gdzie liczy się spójność? Eliminuje masę błędów na starcie.
Doable jest proste celowo. Pokazuje, że architektura działa. W realu dodajesz features, ale filozofia zostaje: pisz raz, waliduj wszędzie, deploy na wiele.
Jak zacząć
Krzywa uczenia jest, ale łagodna. Składnia jak w JS, Pythonie czy Rust. Typy mocne, ale nie przytłaczające.
Zacznij od backendu na Erlangu. Zrób API. Dodaj Lustre i shared typy. Poczujesz różnicę – powrót do fragmentacji boli.
Przyszłość full stack to nie nowe narzędzia na warstwy. To język, który ogarnia wszystkie.
Chcesz spróbować Gleama? Zajrzyj do docs i pomyśl, jak to wpasuje się w twój następny projekt. Type safety na wszystkich platformach czeka.