enhancementhelp wanted
描述
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
Slimtemplates- 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