Backpex - a highly customizable admin panel for Phoenix LiveView applications

Hello everyone!

I am excited to share our heart project Backpex with you.

After building several Phoenix applications, we realized that we were repeating ourselves when it came to building administration panels. We were writing the same CRUD views, search and filter functionality over and over again. We wanted a tool that would allow us to quickly scaffold these views and focus on building the core functionality of our applications.

The tool we wanted had to be able to serve as a simple backend administration panel in one project, while being the core of the application in another.

We looked at existing solutions, but found that none of them offered the flexibility and customization we were looking for, especially in terms of live updates and LiveView features. We decided to develop Backpex to solve this problem and provide a highly customizable administration panel for Phoenix LiveView applications. Backpex should not only be a simple administration interface for developers, but also a good-looking UI for end users.

Even though Backpex already offers a lot of features, there is still a lot to do. We also have many ideas for future work. That’s why we are very open for contributions and appreciate any help. We have just released a public roadmap and created some issues that are open for contributions on GitHub (see “good-first-issue” label).

We really want to hear what you would like to see next and what is missing. We’d love to hear your feedback!

Hex Package: backpex | Hex

GitHub: GitHub - naymspace/backpex: Backpex is a highly customizable administration panel for Phoenix LiveView applications.

Live Demo: https://backpex.live/

63 Likes

Heya! This looks great. :slight_smile:
Will try it out when I have the bandwidth in my project so I can contribute with feedback about integrating it into an “already developed” product.

7 Likes

Seems very promising.
Does it have dual control “Maker/Checker” in place for changing sensitive resources ?

Not yet. Is a maker/checker feature something you need in your project? I started a discussion on GitHub about a maker/checker feature: Maker-checker · naymspace/backpex · Discussion #375 · GitHub

It would be great if it were integrated with ash.

6 Likes

I agree. :slight_smile:

1 Like

Is this a drop in replacement for LiveDashboard or would I need to reimplement all that functionality from scratch?

Yes , in some contexts especially enterprise ones you should enforce maker/checker principle for change and actually that is adopted as part of security and audit guidelines of those applications

1 Like

Thanks for your feedback! I have also started a discussion on GitHub about supporting Ash: Support Ash · naymspace/backpex · Discussion #377 · GitHub

We see that some people have already suggested supporting Ash, so we may consider working on it in the medium term. However, a lot of work needs to be done to support both plain Ecto schemas and Ash resources.

We do not plan to be completely dependent on Ash in the future, so using all the features of Ash while still being able to use Backpex without Ash might be a bit of a challenge.

But the feedback that many of you want to see Ash support is very valuable to us! :pray:

3 Likes

It is not a drop-in replacement for LiveDashboard. Backpex is more of an admin panel rather than an admin dashboard. However, there is already a feature request regarding dashboard functionalities. Of course, you can use LiveDashboard and Backpex at the same time.

1 Like

I don’t understand. What’s the difference between an admin panel and a dashboard? Is it just that ones provides actions for the viewer to take instead of just a window over the data?

The very first screenshot on the Github shows a listing of database entries and such. This is not what LiveDashboard does.

2 Likes

To be fair PLD is extensible so it’s something it can do. So to ask my question a different way why would I use this instead of what’s included out of the box with Phoenix?

Because nothing like this is included in LiveDashboard.

1 Like

But what does this include? Live Dashboard is just some already designed live views. I can add arbitrary pages to LiveDashboard. I linked to the documentation explaining how above. Once you add a new page to LiveDashboard it’s just a regular LiveView, meaning I can make it display any content I want, including all of the content that Backpex displays in its documentation images. The difference is that out of the box LiveDashboard comes configured with a ton of useful pages and Backpex requires me to rebuild all of this functionality (as stated by the author of the lib). If Backpex requires me to write integration code anyway what do I gain by bringing in this library over just adding a new page to LiveDashboard and writing the same integration against a vanilla LiveView?

So you have LiveDashboard setup and you want to create an admin backend. You either build the admin backend yourself, which is perfectly fine to do, or you add one of the several admin backend libraries so some of the the work is done for you. Just because you install one of these libs doesn’t mean you remove LiveDashboard and try to rebuild it’s functionality. You also might not want everyone who has access to the admin backend to see the rest of LiveDashboard. It’s not an either/or situation, both can exist side by side and do different things.

1 Like

This definitely makes it clearer why I’d consider using something like this. I’m still not sold on the other reason but I’m someone that prefers to write a little bit of boilerplate to avoid taking on new dependencies.

A second thing I learned from this is that prompt engineering is not in my future

1 Like

How does this compare to live_admin?

I have checked the high level road map and per my understanding of what Backpex should provide then I think supporting the below would be required besides dual control requested earlier :

  1. Audit records changes “Might be enhanced even to allow some kind of notes or attachment for change reason”.
  2. Filter user access or rights based on profile
  3. Mask sensitive data if user profile does not allow full display like card number or balance in case of payment applications as an example.

awesome!
can this library be used together with a backend built based on ash?

1 Like