Backpex - a highly customizable admin panel for Phoenix LiveView applications

Hello - I’m building an integration with Ash for my app, using the existing Backpex adapter as a starting point.

Ideally I’ll be able to open source this as a standalone AshExtension, or contribute it straight to Backpex in the future.

Would it be possible for me to get into the Backpex Slack?

I’d appreciate being able to either participate in any conversations that might impact this, or at least be aware of them ahead of time so I can prep for any changes that will break my integration.

I also already have a small wish list for you :joy:

And THANK YOU for a great library :tada::tada::tada::tada::tada: I’m at a point where building the integration feels better than the alternatives, as a business decision. I think that says a lot your incredible work.

7 Likes

Hey @eileennoonan!

First, thanks for your work on the Backpex Ash support. Many people have asked about it, but since we don’t use it in any of our apps, we haven’t made much progress in the last few months. Nevertheless, we are very interested in providing full support for Ash with Backpex. Having one of our community members work on it means a lot to us! :raising_hands:

Would it be possible for me to get into the Backpex Slack?

I see that you’ve already joined the Backpex Slack, great!

Ideally I’ll be able to open source this as a standalone AshExtension, or contribute it straight to Backpex in the future.

Having it as a standalone package is great. Regarding your wish list, write down whatever you need to build the Ash adapter. We’ll support you wherever we can.

6 Likes

Woohoo! Thanks so much!

I’m gonna respond in the Slack and hopefully keep a single avenue of communication :slight_smile:

2 Likes

All the best in this effort.
I think it would be great to utilize Ash own resources and policies definitions instead of requiring the developer to add specific resources definitions to utilize Backpex “I think this aligns more with Ash idea of define once , derive the rest” as long as it is possible.

4 Likes

This is, indeed, what we are doing! AshBackpex derives defaults for the Backpex configuration from the Ash resource itself.

defmodule MyAppWeb.Live.Admin.PostLive do
    use AshBackpex.LiveResource

    backpex do
      resource MyApp.Blog.Post
      load [:author]
      layout({MyAppWeb.Layouts, :admin})

      fields do
        field :title
        field :published_at

        field :author do
          display_field(:name)
          live_resource(MyAppWeb.Live.Admin.AuthorLive)
        end
      end

      filters do
        filter :state do
          module MyAppWeb.Live.Admin.Filters.PostStateFilter
        end
      end
    end
end

As time goes on we’ll see what more can be derived. For example in something like that PostStateFilter referenced, say the Post resource has 3 valid states of [:published, :draft, :trashed]. We could derive that filter from those configured constraints.

Policies are still not fully supported. We will need to do a bit of work in Backpex to make that compatible everywhere a given resource is queried.

For now I’m only using AshBackpex in a high-trust environment where all the users are admins anyway. I will be looking into getting policies fully compatible in the coming weeks/months!

4 Likes

Are there any examples or screenshots of customized views? What I’ve seen so far, on the Backpex page and demo are fairly simple CRUD views.