Metadata-Version: 2.1
Name: starlette-admin
Version: 0.0.1
Summary: Simple and extensible admin interface framework for Starlette/FastApi
Home-page: https://jowilf.github.io/starlette-admin
License: MIT
Keywords: sqlalchemy,mongoengine,starlette,fastapi,admin,datatables
Author: Jocelin Hounon
Author-email: hounonj@gmail.com
Requires-Python: >=3.7,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: Jinja2
Requires-Dist: python-multipart
Requires-Dist: starlette
Project-URL: Repository, https://github.com/jowilf/starlette-admin
Description-Content-Type: text/markdown

# starlette-admin

*Starlette-Admin* is a simple and extensible admin interface framework for Starlette/FastApi.

The key features are:

* **Flexibility :** The biggest feature of *Starlette-Admin* is flexibility. Start with autogenerated CRUD-views of your
  model and customize those views & forms as the need arises.
* **Datatables :** *Starlette-Admin* use [Datatables](https://datatables.net/) to render list. Main Features included
  are:
    * **Multi-column ordering:** Sort data by multiple columns at once.
    * **Full-text search:** Filter results by text search with highlight.
    * **Search Builder:** Filter results by complex query including `AND` and `OR` conditions.
    * **Many Export options:** Export your data to CSV, PDF, Excel and Browser Print.
    * You can easily include any other features you need from datatables.
      Read [Datatables documentation](https://datatables.net/) for more information.
* **Files Handling :** Easily attach files to your model. Thanks
  to [SQLAlchemy-file](https://github.com/jowilf/sqlalchemy-file) for SQLAlchemy integration
* **Multiple admin :** Expose multiple admin interfaces.
* **Modern UI** using [Tabler](https://tabler.io/)

This project is inspired by *Flask-Admin* and the main goal is to provide similar tool for Starlette/FastApi.

*Starlette-Admin* can be easily used with any ORM but have currently built-in support for:

* [SQLAlchemy](https://www.sqlalchemy.org/)
* [SQLModel](https://sqlmodel.tiangolo.com/)
* [MongoEngine](http://mongoengine.org/)

---


**Documentation**: [https://jowilf.github.io/starlette-admin](https://jowilf.github.io/starlette-admin/)

**Source Code**: [https://github.com/jowilf/starlette-admin](https://github.com/jowilf/starlette-admin)

**Online Demo**: [Demo](https://github.com/jowilf)

---

## Installation

### PIP

```shell
$ pip install starlette-admin
```

### Poetry

```shell
$ poetry add starlette-admin
```

## Example

SQLAlchemy integration
```Python
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from starlette.applications import Starlette
from starlette_admin.contrib.sqla import Admin, ModelView

Base = declarative_base()
engine = create_engine(
    "sqlite:///example.db", connect_args={"check_same_thread": False}
)


class Post(Base):
    __tablename__ = "posts"

    id = Column(Integer, primary_key=True)
    title = Column(String)


class PostAdmin(ModelView, model=Post):
    pass


Base.metadata.create_all(engine)
app = Starlette()

admin = Admin(engine)
admin.add_view(PostAdmin)
admin.mount_to(app)
```

MongoEngine integration
```Python
import mongoengine
from mongoengine import connect
from starlette.applications import Starlette
from starlette_admin.contrib.mongoengine import Admin, ModelView

connect("example")


class Post(mongoengine.Document):
    title = mongoengine.StringField(min_length=3, required=True)


class PostAdmin(ModelView, document=Post):
    pass


app = Starlette()

admin = Admin()
admin.add_view(PostAdmin)
admin.mount_to(app)
```
Now visiting `/admin` on your browser you can see the Admin interface.

