Създай пълен task manager с Gleam: един език за всички платформи

Създай пълен task manager с Gleam: един език за всички платформи

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

Създаване на пълен Task Manager с Gleam: Един език за всички платформи

Мечтата всеки разработчик да пише код веднъж и да го пуска навсякъде ни преследва от години. Пробвахме с Java applets, Electron, React Native и Flutter. Ами ако проблемът не е в рамките, а в избора на език от самото начало?

Тук идва Gleam – статично типизиран език, който компилира към Erlang за backend и JavaScript за frontend. Това позволява истинско обединено развитие на цял стек. Днес ви показвам как работи на практика с прост task manager – приложение, което разкрива цялата сила на подхода.

Идеята: Един код за множество платформи

Когато рамки обещаваха "пиши веднъж, стартирай навсякъде", обикновено мислеха за един вид деплой. Gleam отива по-дълбоко – същият код компилира за различни среди.

Нашето приложение Doable е умишлено просто. Поддържа основните операции: създаване, четене, промяна и изтриване на задачи. Но зад тази CRUD фасада стои цял архитектонски стек:

  • JSON HTTP API на Erlang с PostgreSQL за съхранение
  • Уеб фронтенд с реактивно управление на състоянието
  • Десктоп апликации за Windows, macOS и Linux чрез Tauri
  • Мобилни апликации за iOS и Android, също с Tauri

Всичко от един език. Един тип систем. Една логика за проверка.

Архитектура: Разработка срещу производство

Как работят разработчиците

В разработка искаме бърза обратна връзка. Docker за базата данни и API сървъра. Hot-reload сървър за всички фронтенди. Тестове без прекомпилиране.

Настройката е чиста:

  • PostgreSQL в Docker с отделни бази за dev и тестове
  • Gleam API сървърът стартира в Docker или локално
  • Един Lustre dev сървър с hot reload за браузър, десктоп и мобилни
  • API proxy заобикаля CORS проблеми – всичко минава през един вход
  • Интеграционни тестове директно върху рутера с тестова база

Това ускорява работата. 30 секунди чакане между промени убива продуктивността.

Как работи в производство

При деплой всичко се опростява. Docker контейнери за всичко. Caddy е единственият вход – proxy към Gleam API и файлов сървър за фронтенда.

Уеб клиентите взимат фронтенда от Caddy и API заявки през същия proxy. Tauri десктоп и мобилни апликациите bundлират фронтенда локално, но ползват Tauri HTTP за API към Caddy. Същото приложение, оптимизирано за платформата.

Разбивка на техническия стек

Backend: Надеждността на Erlang

API сървърът компилира към Erlang с Wisp и Mist. Получаваш не просто уеб фреймуърк, а наследство от телеком инфраструктура. Erlang runtime управлява concurrency, fault tolerance и дистрибуция по-добре от повечето езици.

PostgreSQL осигурява релационна база с дългогодишна надеждност.

Споделеният код: Истинската сила

Gleam блести с shared проект – библиотека, която компилира за Erlang и JavaScript. Типове, валидация, сериализация – всичко споделено. Промениш структура на задача, и се отразява навсякъде.

Няма несъответствия между фронт и бек. Компиляторът хваща грешки преди runtime.

Frontend: Elm архитектура

Уеб фронтендът е на Lustre с Elm Architecture – стандарт за предсказуемо UI състояние. Ако познаваш Elm, ще ти е познато. Десктоп и мобилни следват същите шаблони.

Защо да го ползваш в следващия проект

Пълен тип safety става ключов при сложни апликации. Ето какво се променя:

Рефакторинг без страх. Преименуваш поле в схемата, ъпдейтваш в shared типове – компилаторът сочи всички 47 места.

Консистентност без усилие. Не превеждаш валидация между TypeScript, Swift и Kotlin. Пишеш веднъж в Gleam.

По-бърз онбординг. Новите разработчици учат един език, не три екосистеми.

По-просто управление. По-малко зависимости, деплой стратегии и runtime изненади.

Реалността на практика

Gleam ли е бъдещето на уеб разработката? Не съвсем. Екосистемата е по-малка от TypeScript или Python –影响ва наемане и библиотеки.

Но за нови full-stack проекти, където тип safety и един код са приоритет, елиминира цели класове бъгове.

Примерът с task manager е прост нарочно. Доказва, че архитектурата работи на малък мащаб. За големи проекти добавяш сложност, но философията остава: компилирай веднъж, проверявай навсякъде, деплой на много.

Как да започнеш

Ако те грабна, кривата на обучение е реална, но преодолима. Синтаксисът е близък до JavaScript, Python, Rust. Типовете са мощни, без да те притискат от ден първи.

Започни с Erlang backend. Създай API. Добави Lustre за фронтенд и виж как shared типове елиминират бъгове. След като опиташ обединено full-stack развитие, връщането към раздробени подходи ще ти се стори старомодно.

Бъдещето може да не е в различни инструменти за слоеве, а в език, който покрива всички.


Готов ли си за full-stack с Gleam? Започни с документацията и помисли как следващият ти проект печели от тип-safe компилация на всички платформи.

Read in other languages:

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