/app/admin. It merges into apps/web as your own code, so it’s the natural place to grow an internal admin UI — and it’s the canonical example of a TanStack Router plugin.
Requires PostgreSQL + the Auth plugin.
What it adds
- A route at
web/routes/_authenticated/app/admin/— a paginated user table with search and date filters, built on the sharedTablewidget. - It reads users through the
isAdmin-gatedusers.listendpoint using the typedapiClientanduseApiQuery— no direct DB access from the web app.
Grant admin access
Admin routes are gated by theisAdmin middleware. Make a user an admin:
/app/admin.
How it’s built
It’s a normal TanStack Router file route consuming the typed client:isAdmin-gated endpoint, extending the dashboard — more columns, more resources, bulk actions — is the same pattern you already use everywhere else. See How Ship works.