# Adminable
Create admin interfaces for Ecto Schemas in Phoenix apps
Based on blog post [here](https://lytedev.io/blog/ecto-reflection-for-simple-admin-crud-forms/)
## Installation
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `adminable` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:adminable, "~> 0.3.1"}
]
end
```
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/adminable](https://hexdocs.pm/adminable).
## Configuration
- Add `use Adminable` to your Ecto Schema
```elixir
defmodule MyApp.User do
use Ecto.Schema
import Ecto.{Query, Changeset}, warn: false
use Adminable
...
end
```
- optionally implement fields/0, create_changeset/2 and edit_changeset/2
- Forward to `Adminable.Router`
```elixir
scope "/admin" do
pipe_through [:browser, :my, :other, :pipelines]
forward("/", Adminable.Plug, [
otp_app: :my_app,
repo: MyApp.Repo,
schemas: [MyApp.User],
view_module: MyAppWeb.Adminable.AdminView,
layout: {MyAppWeb.LayoutView, "app.html"}
])
end
```
Arguments
- `otp_app` - Your app
- `repo` - Your app's Repo
- `schemas` - The schemas to make Admin sections for
- `view_module` - (Optional) The view_module to use to display pages. Uses Adminable's view module by default. You can export the view to modify using `mix adminable.gen.view MyWebModule`
- `layout` - (Optional) The layout to use
## Exporting View and Templates
To export Adminable's AdminView and templates for modification, run:
```bash
mix adminable.gen.view MyWebModule
```