MaxSvargal

MaxSvargal

AshSDUI - Server-Driven UI for Phoenix LiveView applications backed by Ash resources

Hey folks! :waving_hand:

I’d like to introduce AshSDUI, a new library for generating complex interfaces and dynamic layouts directly from declarative Ash resource metadata, powered by Ash and Phoenix LiveView.

I know excellent tools like AshAdmin, Backpex, and Aurora UIX already exist. However, in my experience, they often lack architectural flexibility and clear escape hatches and sometimes excessive boilerplate and low-level handling. I wanted the ability to generate nested forms easily and dynamically alter layouts straight from the database or resource code, based on the actor, tenant, or user role without cluttering templates with conditional logic, and to do so with minimal boilerplate.

With AshSDUI, I’ve focused on creating a highly compact public interface that relies on your existing resource Ash metadata and ready-to-use receipts, but remains fully extensible at any level. It’s designed as an authoring ladder: you can start with fully generated screens and step down to custom recipes or raw LiveView only when needed, all without rewriting the whole stack.

AshSDUI is useful when you want more than scaffolded CRUD, but you still want a declarative path that stays close to your Ash resource model.

  • It separates metadata, view resolution, recipes, and render trees into clear layers.
  • It gives humans and llm agents a smaller authoring surface through standalone UI modules.
  • It keeps generated screens, custom layouts, and live runtime components on one contract.
  • It can grow from generated pages into product UI without forcing a rewrite of the whole stack.

Key highlights:

  • Server-Driven UI (SDUI): Dynamically resolve layouts and component compositions based on context (actor, tenant, audience, etc.) without touching the frontend templates.
  • Metadata-Driven Generation: Seamlessly generate complex UI, handle deep model relationships, and build nested forms right from Ash resource descriptions (ui_field, ui_intent, etc.).
  • Architectural Flexibility: Build ephemeral, code-authored, or database-persisted layout trees with clear escape hatches at every layer.
  • Shared Runtime Contract: Both generated screens and custom SDUI layouts share the exact same underlying contract (view, bindings, state, and context), keeping your data loading and rendering completely consistent.

You can find all the details, tutorials, and deep dives into the runtime/authoring models in the documentation here:

:package: AshSDUI Repository and Readme

:books: AshSDUI Tutorial

I would love to hear your feedback, thoughts, and suggestions! Thanks for your time.

Most Liked

nico_amsterdam

nico_amsterdam

Welcome Max.
You can update your skill set on https://maxsvargal.github.io/ :smiley:

omer

omer

Amazing work! This is exactly what the Ash ecosystem needs right now.

Ash provides absolute superpowers on the backend—handling complex domain logic, relationships, and APIs beautifully. However, the frontend has often remained a bottleneck where we lose that declarative leverage.

The concept of a true Metadata-Driven UI is an absolute game-changer for rapid application development. Having worked extensively with massive ecosystems like Odoo and Frappe, I’ve seen firsthand that their secret weapon is exactly this architecture. By allowing resource metadata to natively dictate dynamic layouts and nested forms, developers can focus entirely on business logic rather than wiring up redundant frontend templates.

Bringing this level of Server-Driven UI to Elixir—combining the declarative nature of Ash with LiveView—is a brilliant move. Your approach with the “authoring ladder” is particularly smart, providing that “batteries-included” experience for generating complex screens quickly while leaving a well-structured escape hatch for custom components.

I’m really looking forward to diving into the repo and seeing how it handles complex, high-concurrency SaaS architectures. Thank you for building and sharing this!

P.S. This really feels like the perfect answer to the previous community explorations regarding the future of Pyro and AshAdmin: https://forum.elixirforum.com/t/an-exploration-of-the-the-future-of-pyro-and-ashadmin/60827

MaxSvargal

MaxSvargal

The ultimate goal is to provide an abstract, declarative architecture that isn’t just for admin dashboards, but is equally suited for public, user-facing interfaces. As you noted with the ‘authoring ladder’, it’s all about hitting that exact sweet spot: delivering the absolute minimum boilerplate out of the box, while allowing for maximum customization on demand.

Thanks for checking it out, and I’d love to hear your thoughts once you dive into the repo!

Where Next?

Popular in Announcing Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29603 241
New
asiniy
Hey there! I wrote a download elixir package which does exactly what its name about - an easy way to download files. I saw solutions ab...
New
bluzky
You may know https://ui.shadcn.com/, a UI component library for React. I really love it’s design style and components. I’ve built some co...
384 14136 119
New
oltarasenko
Dear Elixir community, After a year of development, bug fixes, and improvements, we are proudly ready to share the release of Crawly 0.1...
New
kip
Image is an image processing library for Elixir. It is based upon the fabulous vix library that provides a libvips wrapper for Elixir. I...
622 18934 194
New
ahamez
Hi everyone, I’ve been working on this protobuf library for 3 years. We use it in the company I work for, EasyMile, to communicate with ...
New
mindok
What is ContEx? A pure Elixir server-side data plotting/charting library outputting SVG. It has nice barcharts in particular and works g...
New
josevalim
Hello everyone, We have just released NimbleCSV which is a small and fast CSV parsing library for Elixir. It allows developers to define...
New
fuelen
Hey folks! Want to present a toolkit for writing command-line user interfaces. It provides a convenient interface for colorizing text...
New
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29603 241
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31013 112
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31265 143
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement