This release is a pre-release and may not be stable for production use.
adminsite
An admin panel for the SQLAlchemy 2.0 ORM that works with FastAPI, Starlette and Litestar.
Live demo · Documentation · Changelog · For AI assistants
adminsite is in alpha. It is tested and it works, but names may still change before 0.1.0, so pin the version you install.
Installation
pip install adminsite==0.1.0a8
Add the driver your database needs, such as asyncpg or aiosqlite.
Usage
from adminsite import Admin, ModelView
class OrderView(ModelView, model=Order):
list_display = ("id", "customer.name", "status", "total")
search_fields = ("customer.name", "customer.email")
list_filter = ("status", "created_at")
app.mount("/admin", Admin(engine, views=[OrderView]))
The labels, filters, form controls and validation come from your models. Getting started builds a complete app, signing in included, in a few minutes.
Features
- Pages from your models: a searchable, sortable list with filters and saved views, a page for each record, and forms with validation.
- Related records: pick a related record from a searchable list, and edit child rows, such as an order's lines, inside the parent's form.
- Built-in filters for choices, yes or no, number and date ranges, related records and text.
- Custom filters for anything the built-in ones do not cover, such as "overdue" or "spent over €1,000".
- Actions that run your own code on the selected rows, on every row the filters match, on one record or on the whole table, with a dialog for any values they need.
- Permissions for each view, action, field and row.
- Hooks that run your code before and after a save or delete, in the same transaction, and can refuse it with a message.
- An audit log: who changed what and when, including actions, exports and sign ins, with a history on every record and an activity page you can filter.
- Import from CSV or Excel with a preview of every row, and export to CSV.
- File and image uploads, stored on disk or wherever you choose.
- A dashboard of stats, charts and the latest records.
- A JSON API that shares the same views and permissions.
- Signing in with a fixed list of users or your own user table.
- Pages and plugins of your own, such as reports or settings, in the same layout.
- Translations, with Persian built in and right to left layouts.
- Light and dark themes, a layout for phones, and pages that work with a keyboard and a screen reader.
- Async or sync, on SQLite, Postgres and MySQL, with no N+1 queries.
- No Node and no CDN: everything ships inside the package.
How it works
adminsite is one ASGI app, mounted inside yours. Every page and the JSON API go through the
ModelView you write for each model, so its rules hold everywhere.
Documentation
- Getting started sets up a working admin in a few minutes.
- Views covers everything a view can say about a model.
- Permissions is worth reading before you put the admin in front of anyone.
- The reference lists every class and option.
Contributing
Issues and pull requests are welcome. CONTRIBUTING.md says how to run the tests and rebuild the stylesheet.
License
Release files for adminsite 0.1.0a8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| adminsite-0.1.0a8.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| adminsite-0.1.0a8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / adminsite-0.1.0a8.tar.gz
| Download URL | adminsite-0.1.0a8.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d70a343a8a321683f809fa2b492edd856ece7351c6a9221b0c5a40696b6dd8b3
|
|
BLAKE2b-256 checksum How to use checksums |
6298a47ae0cd2bf4cc55469bee8811156ed4b19d6bf607ce5b91cd0f5bcdbac6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / adminsite-0.1.0a8-py3-none-any.whl
| Download URL | adminsite-0.1.0a8-py3-none-any.whl |
|---|---|
| Size | 311.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0e7e0fb1c33c7b09f5a6aa7fde10ee3f5d55b4203a4a52113d3bb59f7cfad4d7
|
|
BLAKE2b-256 checksum How to use checksums |
a173e9d452b9e32b3fd0dc58a0a7e0369fe151807ac840fa28c28823b4d6fdac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log