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.3.0"}
]
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:

Ownership boundary (thin mirror)

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

Published accrue_admin releases resolve accrue ~> 1.3.0. 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:

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

Dev-only (allow_live_reload: true)

PathLiveView 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