Maybe I’ve misread Surface entirely and in that case I apologize from the bottom of my heart ![]()
otherwise I’m wondering whether you would have 1-2 best practices you’d recommend regarding apps using something like
Issues in particular:
- LAYOUT I’m making great strides into “componentizing” Adam’s wonderful design - and using Surface certainly adds to the fun
(my elixir-fu hardly affords offering the result in a public repo like surface-tailwind, but I’ll let you be the judges of that shortly) but I’m very much questioning the use of a single ‘root’ element like yours in mail_liv.exwith 30-40 ‘if some action’ top-level components, and the live-controller-view-what-you-call-them would be humongous
def handle_params(_params, _url, %Socket{assigns: %{live_action: :set_password}} = socket) do
user = System.get_env("USER")
{
:noreply,
socket
|> clear_flash()
|> assign(
info: "Set password of #{user}",
page_title: "Set password of #{user}",
password_hash: nil,
saved_password: "",
password_prompt: "Pick a password: ",
buttons: []
)
}
end
- LINKS I’ve devoured your LIV repo, @derek-zhou and that seems to lean heavy on a kind of SPA concept but I’ve had a hard time finding the “links” where the user will LiveRedirect sort-of




















