# starlette-admin: Admin Panel Framework for FastAPI and Starlette

> starlette-admin is a Python admin panel framework that generates CRUD interfaces for FastAPI and Starlette applications. It supports multiple ORM backends including SQLAlchemy, SQLModel, Tortoise ORM, Beanie, and MongoEngine, and ships with nested filters, import/export, file storage, pluggable authentication, and dark mode.

**jowilf/starlette-admin** — Fast, beautiful and extensible administrative interface framework for FastApi & Starlette applications.

- Repository: https://github.com/jowilf/starlette-admin
- Website: https://jowilf.github.io/starlette-admin/
- Stars: 1,043 · Forks: 98
- Language: Python
- License: MIT
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/jowilf-starlette-admin

## What starlette-admin Generates and Who Needs It

Every production web application eventually needs a way to inspect and modify its data. Building that from scratch inside FastAPI takes time and produces a one-off UI. starlette-admin generates a complete admin dashboard from your existing model definitions, covering create, read, update, and delete operations for each model, with pagination, sorting, search, and shareable URLs built in.

The target user is a Python developer running a FastAPI or Starlette application who wants a polished internal tool without writing the UI code. The README describes the framework as extensible: authentication, storage backends, custom fields, bulk actions, and model views are all pluggable, so teams can adapt the default behavior without forking the framework.

## Installing and Running a First Dashboard

starlette-admin installs as a standard Python package:

```bash
pip install starlette-admin
```

With uv, the equivalent is:

```bash
uv add starlette-admin
```

The README quickstart shows a complete integration with FastAPI and SQLAlchemy in a single file. After defining a SQLAlchemy model and mounting the Admin object, you run the development server:

```bash
fastapi dev
```

The admin interface is then available at http://127.0.0.1:8000/admin. The package requires Python 3.11 or later, as stated in pyproject.toml. Its runtime dependencies are itsdangerous, jinja2, python-multipart, and starlette itself.

## ORM and Database Backend Support

starlette-admin is backend-agnostic. The README lists six supported configurations:

- SQLAlchemy via starlette_admin.contrib.sqla
- SQLModel via starlette_admin.contrib.sqlmodel
- Tortoise ORM via starlette_admin.contrib.tortoise
- Beanie (MongoDB) via starlette_admin.contrib.beanie
- MongoEngine via starlette_admin.contrib.mongoengine
- Custom data sources by subclassing BaseModelView

The custom subclass option is the escape hatch for any data source not covered by the built-in backends: an external API, a flat file, or a non-standard database driver. The examples directory contains 17 numbered examples covering each ORM and several advanced configurations including Pydantic validation, composite primary keys, and S3 file storage.

## Filtering, Sorting, Search, and Data Export

The admin interface supports a nested AND/OR filter builder that lets operators construct multi-condition queries without writing SQL. Standard sorting and full-text search are included, and result URLs are shareable, meaning a filter configuration can be bookmarked or sent to a colleague.

Inline editing for related models reduces the number of navigation steps when updating records that reference other tables. Bulk actions let operators select multiple rows and apply a single operation. Custom row actions provide per-record operations beyond the defaults.

Export covers CSV, Excel, JSON, and PDF formats. Import accepts CSV, JSON, and Excel files with a dry-run validation step before any data is written, which surfaces format errors before they affect the database.

## Authentication, File Storage, and Event Hooks

Authentication is pluggable: the framework defines an interface for login and session management rather than bundling a specific mechanism. The examples directory contains an auth example demonstrating the integration pattern.

File storage supports both local filesystems and S3-compatible object stores, including Amazon S3 and MinIO. The README lists this under features without specifying which field types trigger file handling.

Event hooks fire before and after CRUD operations. These allow developers to run business logic, send notifications, or enforce additional validation without wrapping every view function manually.

Theme customization and dark mode are built in. Internationalization and timezone support are also listed as features, and the repository includes an i18n directory alongside a themes directory.

## starlette-admin vs. sqladmin: Two Different Approaches

sqladmin is the closest direct alternative: it also generates FastAPI admin interfaces from SQLAlchemy models. Both projects are Python, both target FastAPI, and both produce CRUD dashboards from model definitions.

The key difference is scope. sqladmin is SQLAlchemy-only. starlette-admin supports five ORM backends plus custom data sources, which makes it the better fit when a project uses MongoDB alongside a relational database, or when the team wants a single admin framework across multiple projects that may not all share the same ORM. starlette-admin also ships with CSV/Excel/PDF export, dry-run import validation, inline form editing, and S3 file storage as built-in features. Whether those additions justify the larger surface area depends on what the project needs.

## Maintenance and Licensing

The last push was on 2026-09-21. Version 1.0.1 was released on 2026-08-25, following 1.0.0 on 2026-08-16, and a release candidate 1.0.0.rc5 on 2026-08-15. The 1.0 series is the first stable release after a period of release candidates, indicating the API has stabilized. The project is licensed under the MIT License, which permits use, modification, and redistribution without source disclosure requirements.

Full documentation, a quickstart guide, a user guide covering views, fields, filters, actions, and auth, and an API reference are available at jowilf.github.io/starlette-admin. A live demo is accessible at starlette-admin-demo.jowilf.com.

## Conclusion

starlette-admin is a good choice for FastAPI or Starlette projects that need a full-featured admin interface across multiple ORM backends, or that require MongoDB support alongside relational databases. It is less suited for teams that want a no-code admin tool or one that works without any Python model definitions. Before adopting it, verify that your ORM is in the supported list and review the live demo at starlette-admin-demo.jowilf.com to confirm the interface matches your requirements.

## FAQ

### Does starlette-admin support MongoDB?

Yes. starlette-admin includes built-in backends for both Beanie (starlette_admin.contrib.beanie) and MongoEngine (starlette_admin.contrib.mongoengine), both of which are MongoDB ODMs for Python.

### Does starlette-admin work with FastAPI or only with Starlette?

starlette-admin works with both. The README quickstart shows a FastAPI integration, and the framework is built on Starlette so it is compatible with any ASGI application that uses Starlette's routing.

### How does starlette-admin handle authentication?

Authentication is pluggable: the framework defines an interface rather than bundling a specific login system. The examples directory includes an auth example showing how to implement the integration. The README does not document a built-in username/password provider.

## Sources

- [Official documentation](https://jowilf.github.io/starlette-admin/)
- [Official README](https://github.com/jowilf/starlette-admin#readme)
- [Project repository](https://github.com/jowilf/starlette-admin)
- [Release notes](https://github.com/jowilf/starlette-admin/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/jowilf-starlette-admin
