Current section

Files

Jump to
dala lib dala.ex
Raw

lib/dala.ex

defmodule Dala do
@moduledoc """
Dala — BEAM-on-device dalaile framework for Elixir.
OTP runs on the device. Screens are GenServers. The UI is rendered by
Compose (Android) and SwiftUI (iOS) via a thin NIF. No server required.
## Quick start
defmodule MyApp.HomeScreen do
use Dala.Screen
def mount(_params, _session, socket) do
{:ok, Dala.Socket.assign(socket, :title, "Hello, Dala!")}
end
def render(assigns) do
%{
type: :column,
props: %{padding: :space_md},
children: [
%{type: :text, props: %{text: assigns.title, text_size: :xl}, children: []}
]
}
end
end
## Modules
- `Dala.App` — app entry point and navigation declaration
- `Dala.Screen` — screen behaviour and GenServer wrapper
- `Dala.Socket` — assigns and navigation API
- `Dala.Theme` — design token system
- `Dala.Renderer` — component tree serialisation
- `Dala.Test` — live device inspection and testing helpers
- `Dala.Preview` (dev only) — preview UI in browser without device
See the [Getting Started](guides/getting_started.html) guide to create your
first app. See [Architecture & Prior Art](guides/architecture.html) for how
Dala compares to LiveView Native, Elixir Desktop, React Native, Flutter, and
native development.
"""
defdelegate assign(socket, key, value), to: Dala.Socket
defdelegate assign(socket, kw), to: Dala.Socket
end