# starlette-admin
*Fast, beautiful, and extensible administrative interface framework for Starlette & FastApi applications*
<p align="center">
<a href="https://github.com/jowilf/starlette-admin/actions/workflows/test.yml">
<img src="https://github.com/jowilf/starlette-admin/actions/workflows/test.yml/badge.svg" alt="Test suite">
</a>
<a href="https://github.com/jowilf/starlette-admin/actions">
<img src="https://github.com/jowilf/starlette-admin/actions/workflows/publish.yml/badge.svg" alt="Publish">
</a>
<a href="https://codecov.io/gh/jowilf/starlette-admin">
<img src="https://codecov.io/gh/jowilf/starlette-admin/branch/main/graph/badge.svg" alt="Codecov">
</a>
<a href="https://pypi.org/project/starlette-admin/">
<img src="https://badge.fury.io/py/starlette-admin.svg" alt="Package version">
</a>
<a href="https://pypi.org/project/starlette-admin/">
<img src="https://img.shields.io/pypi/pyversions/starlette-admin?color=2334D058" alt="Supported Python versions">
</a>
</p>
![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 Starlette
from 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)
Raw data
{
"_id": null,
"home_page": null,
"name": "starlette-admin",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "admin, dashboard, datatables, fastapi, mongoengine, odmantic, sqlalchemy, sqlmodel, starlette",
"author": null,
"author_email": "Jocelin Hounon <hounonj@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/c0/6e/8468ace0ee826dc797c77c7076c5294f4abe78debabb8f8ab7c3e137f0b2/starlette_admin-0.14.1.tar.gz",
"platform": null,
"description": "# starlette-admin\n\n*Fast, beautiful, and extensible administrative interface framework for Starlette & FastApi applications*\n\n\n<p align=\"center\">\n<a href=\"https://github.com/jowilf/starlette-admin/actions/workflows/test.yml\">\n <img src=\"https://github.com/jowilf/starlette-admin/actions/workflows/test.yml/badge.svg\" alt=\"Test suite\">\n</a>\n<a href=\"https://github.com/jowilf/starlette-admin/actions\">\n <img src=\"https://github.com/jowilf/starlette-admin/actions/workflows/publish.yml/badge.svg\" alt=\"Publish\">\n</a>\n<a href=\"https://codecov.io/gh/jowilf/starlette-admin\">\n <img src=\"https://codecov.io/gh/jowilf/starlette-admin/branch/main/graph/badge.svg\" alt=\"Codecov\">\n</a>\n<a href=\"https://pypi.org/project/starlette-admin/\">\n <img src=\"https://badge.fury.io/py/starlette-admin.svg\" alt=\"Package version\">\n</a>\n<a href=\"https://pypi.org/project/starlette-admin/\">\n <img src=\"https://img.shields.io/pypi/pyversions/starlette-admin?color=2334D058\" alt=\"Supported Python versions\">\n</a>\n</p>\n\n![Preview image](https://raw.githubusercontent.com/jowilf/starlette-admin/main/docs/images/preview.jpg)\n\n## why starlette-admin?\n\nFastAPI has emerged as a popular web framework for building APIs in Python. However, it lacks a mature admin interface\nsolution like Flask-Admin to quickly manage your data through a user-friendly interface. Although\nsolutions like Sqladmin and Fastapi-Admin exist, they only work with specific ORMs such as SQLAlchemy and Tortoise ORM.\n\nStarlette-admin was born from the need for a FastAPI admin interface that works with various data layer. It aims\nto provide a complete solution for CRUD interfaces regardless of the database backend. Starlette-admin works out of the\nbox with multiple ORM/ODMs and can also be used with a custom data layer.\n\n## Getting started\n\n* Check out [the documentation](https://jowilf.github.io/starlette-admin).\n* Try\n the [live demo](https://starlette-admin-demo.jowilf.com/). ([Source code](https://github.com/jowilf/starlette-admin-demo))\n* Follow the [tutorials](https://jowilf.github.io/starlette-admin/tutorials/)\n* Try the several usage examples included in\n the [/examples](https://github.com/jowilf/starlette-admin/tree/main/examples) folder\n* If you find this project helpful or interesting, please consider giving it a star \u2b50\ufe0f\n\n## Features\n\n- CRUD any data with ease\n- Automatic form validation\n- Advanced table widget with [Datatables](https://datatables.net/)\n- Search and filtering\n- Search highlighting\n- Multi-column ordering\n- Export data to CSV/EXCEL/PDF and Browser Print\n- Authentication\n- Authorization\n- Manage Files\n- Custom views\n- Custom batch actions\n- Supported ORMs\n * [SQLAlchemy](https://www.sqlalchemy.org/)\n * [SQLModel](https://sqlmodel.tiangolo.com/)\n * [MongoEngine](http://mongoengine.org/)\n * [ODMantic](https://github.com/art049/odmantic/)\n * Custom\n backend ([doc](https://jowilf.github.io/starlette-admin/advanced/base-model-view/), [example](https://github.com/jowilf/starlette-admin/tree/main/examples/custom-backend))\n- Internationalization\n\n## Installation\n\n### PIP\n\n```shell\n$ pip install starlette-admin\n```\n\n### Poetry\n\n```shell\n$ poetry add starlette-admin\n```\n\n## Example\n\nThis is a simple example with SQLAlchemy model\n\n```python\nfrom sqlalchemy import create_engine\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom sqlalchemy.orm import Mapped, mapped_column\nfrom starlette.applications import Starlette\n\nfrom starlette_admin.contrib.sqla import Admin, ModelView\n\nBase = declarative_base()\nengine = create_engine(\"sqlite:///test.db\", connect_args={\"check_same_thread\": False})\n\n\n# Define your model\nclass Post(Base):\n __tablename__ = \"posts\"\n\n id: Mapped[int] = mapped_column(primary_key=True)\n title: Mapped[str]\n\n\nBase.metadata.create_all(engine)\n\napp = Starlette() # FastAPI()\n\n# Create admin\nadmin = Admin(engine, title=\"Example: SQLAlchemy\")\n\n# Add view\nadmin.add_view(ModelView(Post))\n\n# Mount admin to your app\nadmin.mount_to(app)\n```\n\nAccess your admin interface in your browser at [http://localhost:8000/admin](http://localhost:8000/admin)\n\n## Third party\n\n*starlette-admin* is built with other open source projects:\n\n- [Tabler](https://tabler.io/)\n- [Datatables](https://datatables.net/)\n- [jquery](https://jquery.com/)\n- [Select2](https://select2.org/)\n- [flatpickr](https://flatpickr.js.org/)\n- [moment](http://momentjs.com/)\n- [jsoneditor](https://github.com/josdejong/jsoneditor)\n- [fontawesome](https://fontawesome.com/)\n- [TinyMCE](https://www.tiny.cloud/)\n\n## Contributing\n\nContributions are welcome and greatly appreciated! Before getting started, please read\n[our contribution guidelines](https://github.com/jowilf/starlette-admin/blob/main/CONTRIBUTING.md)\n",
"bugtrack_url": null,
"license": null,
"summary": "Fast, beautiful and extensible administrative interface framework for Starlette/FastApi applications",
"version": "0.14.1",
"project_urls": {
"Changelog": "https://jowilf.github.io/starlette-admin/changelog/",
"Documentation": "https://jowilf.github.io/starlette-admin",
"Homepage": "https://github.com/jowilf/starlette-admin",
"Repository": "https://github.com/jowilf/starlette-admin"
},
"split_keywords": [
"admin",
" dashboard",
" datatables",
" fastapi",
" mongoengine",
" odmantic",
" sqlalchemy",
" sqlmodel",
" starlette"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "bd5aac9ab9846350b40d73539c9094bf447d7900c586e013011af2a9fe995676",
"md5": "e68a8ab75138f46a35a5fe8e8a7ace56",
"sha256": "5b6260d7ed3db455585852d669feb7ed9a8c5f9a1e3d48d21a52912ec37e18f9"
},
"downloads": -1,
"filename": "starlette_admin-0.14.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e68a8ab75138f46a35a5fe8e8a7ace56",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 2160522,
"upload_time": "2024-07-12T19:42:32",
"upload_time_iso_8601": "2024-07-12T19:42:32.168867Z",
"url": "https://files.pythonhosted.org/packages/bd/5a/ac9ab9846350b40d73539c9094bf447d7900c586e013011af2a9fe995676/starlette_admin-0.14.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c06e8468ace0ee826dc797c77c7076c5294f4abe78debabb8f8ab7c3e137f0b2",
"md5": "6f801f1668286d4992dd920fba244ab0",
"sha256": "45e2baa3b9a8deec7a6e8ca9295123f648bb0d2070abe68f27193c6d5e32cc38"
},
"downloads": -1,
"filename": "starlette_admin-0.14.1.tar.gz",
"has_sig": false,
"md5_digest": "6f801f1668286d4992dd920fba244ab0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 2099705,
"upload_time": "2024-07-12T19:42:29",
"upload_time_iso_8601": "2024-07-12T19:42:29.866786Z",
"url": "https://files.pythonhosted.org/packages/c0/6e/8468ace0ee826dc797c77c7076c5294f4abe78debabb8f8ab7c3e137f0b2/starlette_admin-0.14.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-12 19:42:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jowilf",
"github_project": "starlette-admin",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "starlette-admin"
}