Gleamilla täystohon taskienhallinta-appi: Yksi kieli, kaikki alustat

Gleamilla täystohon taskienhallinta-appi: Yksi kieli, kaikki alustat

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

Gleamilla täystietokantasovellus: Yksi kieli, kaikki alustat

Kehittäjät ovat vuosikymmenten ajan metsästäneet unelmaa, jossa koodi kirjoitetaan kerran ja pyörii kaikkialla. Java appletit, Electron, React Native ja Flutter ovat olleet yrityksiä. Entä jos ratkaisu ei olekaan frameworkeissa, vaan oikeassa kielessä alusta asti?

Tässä tulee Gleam: staattisesti tyypitetty kieli, joka kääntyy sekä Erlangiksi (backend) että JavaScriptiksi (frontend). Se mahdollistaa aidon yhtenäisen täystietokannan. Tässä artikkelissa rakennamme esimerkin: yksinkertaisen tehtävänhallintasovelluksen, joka näyttää, miten homma toimii käytännössä.

Visio: Yksi koodipohja, monta alustaa

Useimmat frameworkit lupaavat "kirjoita kerran, aja kaikkialta", mutta tarkoittavat vain yhtä deployment-tyyppiä. Gleam menee syvemmälle – sama lähdekoodi kääntyy eri ympäristöihin.

Sovelluksemme, Doable, hoitaa perusasiat: tehtävien luonti, lukeminen, päivitys ja poisto. Yksinkertainen pintataso kätkee alleen koko arkkitehtuurin:

  • JSON HTTP API Erlangilla ja PostgreSQL-tallennuksella
  • Selainpohjainen frontend reaaliaikaisella tilanhallinnalla
  • Natiivit desktop-sovellukset Windowsille, macOS:lle ja Linuxille Taurin avulla
  • iOS- ja Android-sovellukset myös Taurilla

Kaikki samalla kielellä. Samalla tyyppijärjestelmällä. Samalla validointilla.

Arkkitehtuuri: Kehitys vs. tuotanto

Kehitysympäristö reaalisessa työssä

Kehityksessä nopea palaute on kuningas. Tarvitset Dockerin tietokannalle ja API-palvelimelle, hot-reloadin frontendille ja integraatiotestit ilman jatkuvaa kääntämistä.

Toteutus on sujuva:

  • PostgreSQL Dockerissa, erilliset dev- ja test-tietokannat
  • Gleam API Dockerissa tai lokaalisti aktiivisessa kehityksessä
  • Yksi Lustre dev-palvelin hoitaa hot-reloadin selaimeen, desktopiin ja mobiiliin
  • API-proxy estää CORS-ongelmat – kaikki kulkee yhdestä pisteestä
  • Integraatiotestit suoraan reitittimeen testitietokannalla

Tämä nopeuttaa työtä. 30 sekunnin odotus muutosten välillä tappaa tuottavuuden.

Tuotantoympäristö pelkistettynä

Tuotannossa kaikki on Dockerissa. Caddy toimii yhtenäisenä sisäänkäyntinä, proxyaa Gleam API:lle ja tiedostopalvelimelle frontendin jakamiseksi.

Selainklientit hakevat front-endin Caddyn tiedostopalvelimelta ja API-kutsut proxyn läpi. Tauri-sovellukset paketoivat saman front-endin paikallisesti, mutta käyttävät Taurin HTTP-pluginiä API:lle. Sama sovellus, optimoitu per alusta.

Tekniset palikat purettuna

Backend: Erlangin luotettavuus

API kääntyy Erlangiksi Wisp- ja Mist-kirjastoilla. Saat web-frameworkin lisäksi Erlangin perinnön: rinnakkaisuus, vikasietoisuus ja hajautus telecom-tasolla.

PostgreSQL tuo relaatiotallennuksen, jota Erlang-kehittäjät ovat luottaneet 90-luvulta.

Jaettu koodi: Todellinen voitto

Gleamin nerokkuus on shared-kirjastossa, joka kääntyy sekä Erlangiksi että JavaScriptiksi. Tyypit, validointi ja sarjastus jaetaan. Tehtävästruktuurin muutos päivittyy automaattisesti kaikkialle.

Ei tyyppivirheitä frontendin ja backendin välillä. Ei "toimii mun koneella" -yllätyksiä. Kääntäjä nappaa ongelmat ennen runtimea.

Frontend: Elm-mallin perinteet

Web-frontend käyttää Lustre-kirjastoa ja Elm Architecturea – tuttu Elm-kehittäjille, muille oppimisen arvoinen. Se tekee UI-tilasta ennakoitavaa ja testattavaa.

Desktop ja mobiili noudattavat samaa mallia eri kohteissa.

Miksi tämä kiinnostaa seuraavaa projektia?

Täystietokannan tyyppiturvallisuus kasvaa tärkeäksi monimutkaisissa sovelluksissa. Muutokset:

Refaktorointi ilman pelkoa. Muuta kenttä skeemassa, päivitä shared-tyyppi – kääntäjä näyttää kaikki 47 paikkaa. Ei arvuuttelua.

Alustojen yhtenäisyys ilmaiseksi. Validointi kirjoitetaan Gleamissa, kääntyy kolmelle kohteelle ilman TypeScript-, Swift- tai Kotlin-käännöksiä.

Uusien kehittäjien oppiminen nopeutuu. Yksi kieli ja tyyppijärjestelmä kolmen sijaan moninkertaistaa tehon.

Käyttöönotto yksinkertaistuu. Vähemmän kieliä, riippuvuuksia, deploy-strategioita ja yllätyksiä.

Käytännön totuus

Onko Gleam web-kehityksen tulevaisuus? Ei kaikille. Ekosysteemi on pienempi kuin TypeScriptillä tai Pythonilla – rekrytointi ja kirjastot ovat haaste.

Pienille tiimeille vihreät kentät, joissa tyyppit ja yhtenäisyys ratkaisevat? Poistaa kokonaisia bug-kategorioita.

Tehtävänhallinta on yksinkertainen tarkoituksella. Se todistaa arkkitehtuurin toimivuuden pienessä mittakaavassa. Isommat sovellukset monimutkaistuvat, mutta perusperiaate pysyy: käännä kerran, validoi kaikkialla, deployaa moneen.

Aloita näin

Jos kiinnostaa, oppimiskäyrä on jyrkkä mutta hallittava. Gleamin syntaksi muistuttaa JavaScriptiä, Pythonia ja Rustia. Tyyppijärjestelmä on vahva, mutta ei vaadi heti mestaruutta.

Aloita Erlang-backendista ja API:sta. Lisää Lustre frontendille ja katso, miten shared-tyypit tappavat bugeja. Kun koet yhtenäisen täystietokannan, palaaminen sirpaleiseen malliin tuntuu vanhanaikaiselta.

Tulevaisuus ei ehkä ole erikoistyökaluja kerroksille. Se voi olla kieli, joka osuu kaikkiin kerroksiin.


Kokeile Gleamin täystietokantaa? Sukella Gleam-dokumentaatioon ja mieti, miten seuraava projektisi hyötyisi tyyppiturvallisesta kääntämisestä kaikille alustoille.

Read in other languages:

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