AccrueAdmin

LiveView admin UI for Accrue billing operations. Versioning tracks the accrue package—use the same ~> range for both. For a plain-language history of releases (instead of only GitHub release bullets), see Accrue release notes.

Quickstart

accrue_admin stays downstream of the core billing setup. Start with the checked-in Fake-backed demo or the Accrue First Hour guide, get the core billing facade and signed webhook path working, then mount the admin UI for operators.

Hex vs main: The {:accrue_admin, "~> …"} line below tracks accrue_admin/mix.exs@version on the branch you are reading (typically main on GitHub). Hex.pm publishes that train after release; use HexDocs for operator UI docs matched to the Hex version you resolved.

Keep accrue on the same ~> train when both packages are in the host mix.exs, and pin production upgrades via mix.lock.

Add accrue_admin to your host application and mount the package router where operators manage billing:

defp deps do
  [
    {:accrue_admin, "~> 1.1.2"}
  ]
end
defmodule MyAppWeb.Router do
  use MyAppWeb, :router

  import AccrueAdmin.Router

  scope "/" do
    pipe_through [:browser]

    accrue_admin "/billing"
  end
end

Run mix deps.get, finish the core billing and signed-webhook path, and then continue with the package guide on HexDocs for route session options, branding, and auth details:

Operator copy (tiers)

Contributors should treat operator-facing strings in three tiers:

Host setup

accrue_admin expects the host app to provide browser session state and an Accrue.Auth adapter that can resolve an admin-capable operator. The full router mount, branding config, and auth expectations live in the admin UI guide on HexDocs:

The first-time host setup path for the core package lives in the Accrue First Hour guide:

The canonical local demo path lives in the checked-in host app:

Published accrue_admin releases resolve accrue ~> 1.1.2. Monorepo development keeps the sibling ../accrue path dependency unless ACCRUE_ADMIN_HEX_RELEASE=1 is set for release validation.

Assets

The package ships its own committed static bundle from priv/static/. Rebuild it locally with:

cd accrue_admin
mix accrue_admin.assets.build

No host Tailwind config or JavaScript bootstrap changes are required.

Browser UAT

The example-host browser proof in examples/accrue_host/README.md is the full mounted-admin proof path. The commands below are fast package smoke against the admin fixture endpoint only.

The browser regression suite lives under e2e/ and runs against the package's test Phoenix endpoint:

cd accrue_admin
npm ci
npx playwright install chromium
npm run e2e

Admin routes

Source of truth for paths is AccrueAdmin.Router.accrue_admin/2.

The operator sidebar curates navigation for usability; this section lists routes in router declaration order, which may differ from sidebar ordering.

Shipping live/3 routes (relative to the mount path), in monotonic router order:

Order Nav label Path LiveView module
1 Home /AccrueAdmin.Live.DashboardLive
2 Customers /customersAccrueAdmin.Live.CustomersLive
3 /customers/:idAccrueAdmin.Live.CustomerLive
4 Subscriptions /subscriptionsAccrueAdmin.Live.SubscriptionsLive
5 /subscriptions/:idAccrueAdmin.Live.SubscriptionLive
6 Invoices /invoicesAccrueAdmin.Live.InvoicesLive
7 /invoices/:idAccrueAdmin.Live.InvoiceLive
8 Charges /chargesAccrueAdmin.Live.ChargesLive
9 /charges/:idAccrueAdmin.Live.ChargeLive
10 Coupons /couponsAccrueAdmin.Live.CouponsLive
11 /coupons/:idAccrueAdmin.Live.CouponLive
12 Promotion codes /promotion-codesAccrueAdmin.Live.PromotionCodesLive
13 /promotion-codes/:idAccrueAdmin.Live.PromotionCodeLive
14 Connect /connectAccrueAdmin.Live.ConnectAccountsLive
15 /connect/:idAccrueAdmin.Live.ConnectAccountLive
16 Event log /eventsAccrueAdmin.Live.EventsLive
17 Webhooks /webhooksAccrueAdmin.Live.WebhooksLive
18 /webhooks/:idAccrueAdmin.Live.WebhookLive

Dev-only (allow_live_reload: true)

Path LiveView module
/dev/clockAccrueAdmin.Dev.ClockLive
/dev/email-previewAccrueAdmin.Dev.EmailPreviewLive
/dev/webhook-fixturesAccrueAdmin.Dev.WebhookFixtureLive
/dev/componentsAccrueAdmin.Dev.ComponentKitchenLive
/dev/fake-inspectAccrueAdmin.Dev.FakeInspectLive

Guides

Project policies