View Source LiveAdmin

hex package CI status

An admin UI for Phoenix applications built on Phoenix LiveView and Ecto.

Significant features:

  • First class support for multi tenant applications via Ecto's prefix option
  • Overridable views and API
  • Easily add custom actions at the schema and record level
  • Ability to edit (nested) embedded schemas

installation

Installation

First, ensure your Phoenix app has been configured to use LiveView.

Add to your app's deps:

{:live_admin, "~> 0.5.1"}

Add the following to your Phoenix router in any scope ready to serve a live route:

import LiveAdmin.Router
# ...
live_admin "/admin", resources: [MyApp.SomeEctoSchema]

See LiveAdmin.Router.live_admin/2 for full list of options.

To customize a resource, pass a two element tuple when the schema module as the first element, and a keyword list of options is the second: {MyApp.SomeEctoSchema, opts}

Resource specific options:

  • title_with - a binary or MFA specifying how to identify the resource
  • label_with - a binary or MFA specifying how to identify individual records
  • list_with - an atom or MFA that identifies the function that implements listing a resource
  • create_with - an atom or MFA that identifies the function that implements creating a resource
  • update_with - an atom or MFA that identifies the function that implements updating a record
  • delete_with - an atom or MFA that identifies the function that implements deleting a record
  • validate_with - an atom or MFA that identifies the function that implements validating a changed record
  • hidden_fields - a list of fields that should not be displayed in the UI
  • immutable_fields - a list of fields that should not be editable in forms
  • actions - actions to perform on a record
  • tasks - actions to perform on a resource
  • components - overrides for specific views (:list, :new, :edit)

app-config

App config

The following runtime config is supported:

  • ecto_repo - the Ecto repo to use for db operations
  • prefix_options - a list or MFA specifying prefix options to be passed to Ecto functions
  • css_overrides - a string of CSS to be appended to app css

In addition to these, most resource configuration can be set here in order to set a global default to apply to all resources unless overridden in their individual config.

Example:

config :live_admin,
  ecto_repo: MyApp.Repo,
  prefix_options: {MyApp.Accounts, :list_tenant_prefixes, []},
  immutable_fields: [:id, :inserted_at, :updated_at],
  label_with: :name

See development app for more example configuration.