couhajjou

couhajjou

An exploration of the the future of Pyro and AshAdmin

An exploration of the the future of Pyro and AshAdmin

I’ve been playing with ash _admin.
from my point of view, pyro and ash_admin try solve the same “technical” problem.

But allow me to describe a market perspective:

Solution Space Perspective

In web frameworks (Laravel and Django) the problem is called admin panel
In ERPs (Odoo, Frappe) it’s called interface builder

Sexy Sass - have the best looking UI

in most ‘Sexy SaaS’ (think AirBnb, Spotify, Netflix) admin panels are not customer facing . and are mostly used for back-office. Mostly because the UI is branded and the UX is crafted starting from figma, and designers like to have more freedom building their design system.
I would tag ‘Sexy’ any saas where the business decision is to have appeal as key success factor.
In a UI design project, appeal is achieved by 2 factors:

  • beauty : this can be subjective but human are naturally drawn to ‘harmonious’ designs.
  • and uniqueness. if something is beautiful but not rare, it becomes less appealing

Sexy SaaS is mainly built using Figma and custom design system from the ground-up (examples: https://storybook.js.org/showcase/projects)

ERPs interface builder - are well architectured and are implementation complete

In ERP Interface Builders is what is used to build customers facing screens. In an ERP it is common to have a few thousands screens.

So Interface Builders are more battle tested and more feature complete than ‘admin panels’

So personally as an engineer I like to ‘steal’ from Odoo because their GUI paradigms are old and ahead of everybody else IMO.

But as product designer, ERP can be ugly to my eyes (even if Frappe and Microsoft dynamics doesn’t look bad)

Admin panels from web frameworks - are junior Interface builder

The architecture paradigm on admin panels from web frameworks is the the same as ERP interface builders.

And the best looking admin panels don’t inspire me either.
IMO an interesting approach is retool.com
retool was a backend agnostic admin panel, I just rechecked to day I see they pivoted to a low-code app builder. wow. I will revisit them.

No-code / low-code App Builders have the best ergonomics

So where I do find better (ergonomics and looks) Interface builders. Well it’s in No-Code solutions. My benchmark and inspirations are Fibery and DirectUS (I have to recheck retool)

Gartner Style magic quadrant.

So here is my opinionated summary

  • Sexy Sass - have the best looking UI
  • ERPs interface builder - are well architectured and are implementation complete
  • No-code / low-code App Builders have the best ergonomics

I don’t have a “magic quadrant” yet. And there are more than 2 axes of classification:

  • Sex Appeal
  • Coverage
  • Ergonomics
  • Backend Agnostic

But regardless of targeting a niche or mass markets, I feels that these criteria can segment the space pretty well.

Disclaimer: This is an opinionated post, not a study. Ash is great.

What about Tools and Skills

  • Sexy SaaS: World class Designer in Figma, mastery of graphic design. (Design System), Handoff to Front-End engineer (a JS fanatic most of the time :wink: haha). The output is a Design System that can be shared to the public.

  • ERP Interface builder: Just compose the interface in a “Studio tool”, the old school way, with drag and drop. Or use an XML syntax, well documented. No graphic design skills necessary. But Just good copywriting and good common sense. High level knowledge of UI design is welcome. The Design system is build once, and reskinned every few years. But most of the time it’s locked in the past. Opportunities for Redesign are rare.

  • No-code: they target entrepreneurs. So these tools have the best ergonomics and are the easiest to use. These tools can make a lot of money (can be billions$)

  • Admin panels from web frameworks: these are built using DSLs by nerds like you and me. People who enjoy vim or vscode. Most of us are bad ui designers and prefer keyboard to mouse. These tools are mostly free or make a few money < 10M$

Is it Business Opportunity for Ash ?:bulb:

What about a product called “Ash Studio” similar to retool.com / fibery.io / directus.io
I would call it just Ash (one word) and rebrand the framework as “Ash Framework”. The UI DSL will stay open-source and free forever. Nerds like me will stay happy :wink:
The UI code will be payed for, open-source, with hosting options. The UI code can be self hosted and hosted on our cloud, and does connect to your backend.
Nerds hate making good UI so they can ask their boss to pay for UI.
I did pay for tailwind UI and I am happy.

With an open core model. This will bring more money to the core team, and thus allows for a better velocity and exposure while still staying small.

Most Liked

zachdaniel

zachdaniel

Creator of Ash

Some context on my personal intentions for AshAdmin:

After 3.0 and UX improvements, I plan to focus on ash_admin for a while, very potentially in conjunction with @frankdugan3’s work on pyro. The goal will be to invert the current configuration style from living in the resource to instead be its own separate DSL. Currently it is built as basically a “super admin UI”, and it needs to be rebuilt with the specific intention of being distributable to end users.

frankdugan3

frankdugan3

I would say Pyro is orthogonal to AshAdmin. Pyro is meant for userspace UI, AshAdmin is more of an admin UI.

Yes, I originally designed Pyro to be used in an ERP with 90+ and growing resources.

The page performance is good as I make it a point to do the heavy lifting at compile time, but I would have to admit that adding UI DSL to the resource itself was a mistake as it creates a ton of heavy recompilation for every change to the UI. Part of my work has been to move the UI DSL outside the resource files.

The AshPyro part is actually pretty easy, and you could easily roll your own solution using your components. What has been super challenging has actually been the designing the component library with the level of customization I’m aiming to achieve.

frankdugan3

frankdugan3

FWIW, Zach has already suggested to me the possibility of modifying the Pryo DSL such that it could be used either in a resource or separately. I like the idea, and it would be trivial to make that possible down the road.

My use case for Pyro is in building an ERP, which has hundreds of resources. The coupling makes it simple to keep track of things for me, but I completely understand that many would not like to do it that way and would like to accommodate both ways of doing things. It also makes sense to make room for other contexts, like LiveView Native or Scenic.

Where Next?

Popular in Discussions Top

Jayshua
I recently came across the javascript library htmx. It reminded me a lot of liveview so I thought the community here might be interested....
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New
crispinb
On reading dhh’s latest The One Person Framework it strikes me that Phoenix with LiveView is already pretty much this. However, never hav...
New
Fl4m3Ph03n1x
Background This question comes mainly from my ignorance. Today is Black Friday, one of my favorite days of the year to buy books. One boo...
New
ricklove
I was just introduced to Elixir and Phoenix. I was told about the 2 million websocket test that was done 2 years ago. From my research, t...
New
Crowdhailer
I’ve been hearing much about the new formatter and it’s something I have been keen to try. I find examples buy far the most illuminating...
248 19365 150
New
PragTob
Hey everyone, this has been on my mind for some time and I’d love your input on it! TLDR: I feel like maps are superioer for storing and...
New
und0ck3d
Hello everyone! A few days ago I’ve created a topic here about how people were creating CMSs with Elixir and Phoenix. I’ve been studying...
New
sashaafm
Piggy backing a bit on @dvcrn topic BEAM optimization for functions with static return type?, I’ve been trying to understand in a deeper ...
New
slashdotdash
Phoenix Live View is now publicly available on GitHub. Here’s Chris McCord’s tweet announcing making it public.
New

Other popular topics Top

senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New
jaysoifer
Is there a way to rollback a specific migration and only that one (“skipping” all the other ones)? Would mix ecto.rollback -v 200809061...
New

We're in Beta

About us Mission Statement