smpallen99/ex_admin

Complete Refactor of ExAdmin

Open

#367 opened on May 13, 2017

View on GitHub
 (21 comments) (7 reactions) (1 assignee)Elixir (271 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (1,203 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

We've had issue #166 open for a long time. @dsnider and I have been working on some ideas that we think will make ExAdmin much more extensible, and fit better with the "Phoenix and Elixir" way. I have started working on prototyping of a complete overhaul of the ExAdmin architecture.

Justification

ExAdmin was developed for my first Phoenix Application. The approach I took, although functional, does not align very well with the Phoenix way. Furthermore, I feel that we can do better without the heavy use of DSLs. Finally, I've never been happy with the theme support implementation.

Design Goals

  • break the package apart into a series of composable components
  • make it simple to customize every part of the package
  • remove the dependency on Ecto Schema. .i.e json objects, etc.
  • easy to drop in new themes
  • easy to update with extensive customization
  • still works out of the box, without the need to configure anything
  • intelligent defaults
  • optimize the architecture to support large data (no association drop-downs with thousands of entries)
  • support multiple themes/layouts in a single application (front facing layout and a back office "admin" interface)

Ideas being kicked around

  • Use JS data tables for the index page
    • live search/filtering
  • Revamped sidebar filter
    • live updates
    • more inline with product filters on an eCommerce site
  • Resource modules based on behaviours instead of config
  • Perhaps more of a plug architecture (not sure what that looks like yet
  • Remove the html DSL and replace it with Slim templates
    • Could use eex, but I much prefer indentation based templates
    • Could use both if we get pushback on Slim
  • Customization with generators that create templates of templates
    • prototyping this now
    • avoid the sensitivity of direct generators when updating ExAdmin
    • might making theming much easier
  • componentize each concern (views/templates, controllers, schema)
  • buffer the dependency on Ecto to support other approaches to describe and reflect the schema of resources

This will be a break point release. No backwards compatibility.

I welcome your ideas and feedback. Steve

Contributor guide