All Projects → ash-project → ash_admin

ash-project / ash_admin

Licence: MIT license
An admin ui for Ash Resources

Programming Languages

elixir
2628 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
SCSS
7915 projects

Labels

Projects that are alternatives of or similar to ash admin

Acme.sh
A pure Unix shell script implementing ACME client protocol
Stars: ✭ 24,723 (+53645.65%)
Mutual labels:  ash
pgsentinel
postgresql extension providing Active session history
Stars: ✭ 110 (+139.13%)
Mutual labels:  ash
pilka
Another live-coding tool for creating shader demos, Vulkan+Wgpu powered.
Stars: ✭ 84 (+82.61%)
Mutual labels:  ash
ash postgres
A postgresql datalayer for the Ash Framework
Stars: ✭ 21 (-54.35%)
Mutual labels:  ash
imgui-rs-vulkan-renderer
A Vulkan renderer for imgui-rs using Ash
Stars: ✭ 44 (-4.35%)
Mutual labels:  ash

AshAdmin

Elixir CI License: MIT Coverage Status Hex version badge

An admin UI for Ash resources. Built with Phoenix LiveView.

Demo

https://www.youtube.com/watch?v=aFMLz3cpQ8c

Usage

First, ensure you've added ash_admin to your mix.exs file.

{:ash_admin, "~> 0.8.0"}

Setup

Ensure your apis are configured in config.exs

config :my_app, ash_apis: [MyApp.Foo, MyApp.Bar]

Add the admin extension to each api you want to show in the admin dashboard, and configure it to show

use Ash.Api,
  extensions: [AshAdmin.Api]

admin do
  show? true
end

Modify your router to add ash admin at whatever path you'd like to serve it at.

defmodule MyAppWeb.Router do
  use Phoenix.Router

  import AshAdmin.Router

  # AshAdmin requires a Phoenix LiveView `:browser` pipeline
  # If you DO NOT have a `:browser` pipeline already, then AshAdmin has a `:browser` pipeline
  # Most applications will not need this:
  admin_browser_pipeline :browser

  scope "/" do
    # Pipe it through your browser pipeline
    pipe_through [:browser]

    ash_admin "/admin"
  end
end

Now start your project (usually by running mix phx.server in a terminal) and visit /admin in your browser (or whatever path you gave to ash_admin in your router).

Content Security Policy

If your app specifies a content security policy header, eg. via

plug :put_secure_browser_headers, %{"content-security-policy" => "default-src 'self'"}

in your router, then all of the styles and JavaScript used to power AshAdmin will be blocked by your browser.

To avoid this, you can add the specific AshAdmin nonces to the default-src allowlist, ie.

plug :put_secure_browser_headers, %{"content-security-policy" => "default-src 'nonce-ash_admin-Ed55GFnX' 'self'"}

This will allow AshAdmin-generated inline CSS and JS blocks to execute normally.

Configuration

See the documentation in AshAdmin.Resource and AshAdmin.Api for information on the available configuration.

Development

To work on ash_admin, you'll want to be able to run the dev app. You'll need to have postgres setup locally, at which point you can do the following:

  1. mix ash_postgres.create
  2. mix migrate
  3. mix migrate_tenants

Then, you can start the app with: mix dev

If you make changes to the resources, you can generate migrations with mix generate_migrations

Contributors

Ash is made possible by its excellent community!

Become a contributor

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].