Browserpages
Script or serviceJSON, with a token
adminsite mounted at /admin: sign in, sessions, form tokens, language

Pages

Drawn on the server with Jinja. HTMX and Alpine.js swap in the parts that change.

JSON API

The same views and the same permissions, for scripts and front ends of your own.

ModelView one for each model

your code lives here
fields permissions row scope hooks actions

Fields come from your models, every column and link. Every page and the API ask the view, so its rules hold everywhere.

SQLAlchemy repository

Builds each query, loading what a page shows along with it, never one query per row.

search filters sorting pages
Inside your FastAPI, Starlette or Litestar app
Your database SQLite, PostgreSQL or MySQL, through an async or sync engine

Each of these has a default, and can be swapped for your own:

Sign inAuthProvider Audit logAuditStore File storageStorage Saved viewsSavedViews