Playground

Four tools that came with the app, and one that a coding agent uses.

Admin panel admins only /playground/admin

A table, a form and a button for every action on every resource, built out of the resources themselves. None of it is written by hand: the whole of the wiring is one admin do show? true end block per domain. It edits the users and the tokens as readily as the posts, and it does not stop to ask a policy, so the door checks admin? instead. Sign in as admin@example.com to open it.

Component catalog /playground/storybook

Every component in AshDemoWeb.UI, every variant and every size, rendered with the app's own stylesheet. The catalog cannot drift from the theme, because it is drawing the same components the pages draw.

System dashboard /playground/dashboard

The BEAM underneath: processes, memory, sockets, and this app's own request and database metrics. Open the board in a second tab and watch a process appear per visitor.

Job dashboard /playground/oban

Oban's own page, over the same Postgres the posts live in. Give a card a publish time and its job shows up here within the minute, runs, and moves the card on every board that is open.

Why these links reload the page

Every app page lives in one live_session, so a link between any two of them is a message on a websocket that is already open. Each tool above opens a session of its own, and nothing can navigate across that boundary. These five links are the only ones in the app that ask the browser for a new document.