Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jowilf/starlette-admin
Fast, beautiful and extensible administrative interface framework for Starlette & FastApi applications
https://github.com/jowilf/starlette-admin
admin admin-dashboard datatables fastapi mongoengine sqlalchemy starlette
Last synced: 28 days ago
JSON representation
Fast, beautiful and extensible administrative interface framework for Starlette & FastApi applications
- Host: GitHub
- URL: https://github.com/jowilf/starlette-admin
- Owner: jowilf
- License: mit
- Created: 2022-08-29T15:22:50.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-23T16:33:28.000Z (about 2 months ago)
- Last Synced: 2024-09-29T02:22:12.383Z (about 1 month ago)
- Topics: admin, admin-dashboard, datatables, fastapi, mongoengine, sqlalchemy, starlette
- Language: Python
- Homepage: https://jowilf.github.io/starlette-admin/
- Size: 5.74 MB
- Stars: 592
- Watchers: 9
- Forks: 59
- Open Issues: 73
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- best-of-web-python - GitHub - 37% open · ⏱️ 28.05.2024): (Admin UI)
- awesome-fastapi - Starlette Admin - Admin framework for FastAPI/Starlette, supporting SQLAlchemy, SQLModel, MongoDB, and ODMantic. (Third-Party Extensions / Admin)
README
# starlette-admin
*Fast, beautiful, and extensible administrative interface framework for Starlette & FastApi applications*
![Preview image](https://raw.githubusercontent.com/jowilf/starlette-admin/main/docs/images/preview.jpg)
## why starlette-admin?
FastAPI has emerged as a popular web framework for building APIs in Python. However, it lacks a mature admin interface
solution like Flask-Admin to quickly manage your data through a user-friendly interface. Although
solutions like Sqladmin and Fastapi-Admin exist, they only work with specific ORMs such as SQLAlchemy and Tortoise ORM.Starlette-admin was born from the need for a FastAPI admin interface that works with various data layer. It aims
to provide a complete solution for CRUD interfaces regardless of the database backend. Starlette-admin works out of the
box with multiple ORM/ODMs and can also be used with a custom data layer.## Getting started
* Check out [the documentation](https://jowilf.github.io/starlette-admin).
* Try
the [live demo](https://starlette-admin-demo.jowilf.com/). ([Source code](https://github.com/jowilf/starlette-admin-demo))
* Follow the [tutorials](https://jowilf.github.io/starlette-admin/tutorials/)
* Try the several usage examples included in
the [/examples](https://github.com/jowilf/starlette-admin/tree/main/examples) folder
* If you find this project helpful or interesting, please consider giving it a star ⭐️## Features
- CRUD any data with ease
- Automatic form validation
- Advanced table widget with [Datatables](https://datatables.net/)
- Search and filtering
- Search highlighting
- Multi-column ordering
- Export data to CSV/EXCEL/PDF and Browser Print
- Authentication
- Authorization
- Manage Files
- Custom views
- Custom batch actions
- Supported ORMs
* [SQLAlchemy](https://www.sqlalchemy.org/)
* [SQLModel](https://sqlmodel.tiangolo.com/)
* [MongoEngine](http://mongoengine.org/)
* [ODMantic](https://github.com/art049/odmantic/)
* Custom
backend ([doc](https://jowilf.github.io/starlette-admin/advanced/base-model-view/), [example](https://github.com/jowilf/starlette-admin/tree/main/examples/custom-backend))
- Internationalization## Installation
### PIP
```shell
$ pip install starlette-admin
```### Poetry
```shell
$ poetry add starlette-admin
```## Example
This is a simple example with SQLAlchemy model
```python
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Mapped, mapped_column
from starlette.applications import Starlettefrom starlette_admin.contrib.sqla import Admin, ModelView
Base = declarative_base()
engine = create_engine("sqlite:///test.db", connect_args={"check_same_thread": False})# Define your model
class Post(Base):
__tablename__ = "posts"id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str]Base.metadata.create_all(engine)
app = Starlette() # FastAPI()
# Create admin
admin = Admin(engine, title="Example: SQLAlchemy")# Add view
admin.add_view(ModelView(Post))# Mount admin to your app
admin.mount_to(app)
```Access your admin interface in your browser at [http://localhost:8000/admin](http://localhost:8000/admin)
## Third party
*starlette-admin* is built with other open source projects:
- [Tabler](https://tabler.io/)
- [Datatables](https://datatables.net/)
- [jquery](https://jquery.com/)
- [Select2](https://select2.org/)
- [flatpickr](https://flatpickr.js.org/)
- [moment](http://momentjs.com/)
- [jsoneditor](https://github.com/josdejong/jsoneditor)
- [fontawesome](https://fontawesome.com/)
- [TinyMCE](https://www.tiny.cloud/)## Contributing
Contributions are welcome and greatly appreciated! Before getting started, please read
[our contribution guidelines](https://github.com/jowilf/starlette-admin/blob/main/CONTRIBUTING.md)