Metadata-Version: 2.1
Name: starlette-admin
Version: 0.6.0
Summary: Fast, beautiful and extensible administrative interface framework for Starlette/FastApi applications
Project-URL: Homepage, https://github.com/jowilf/starlette-admin
Project-URL: Documentation, https://jowilf.github.io/starlette-admin
Project-URL: Repository, https://github.com/jowilf/starlette-admin
Project-URL: Changelog, https://jowilf.github.io/starlette-admin/changelog/
Author-email: Jocelin Hounon <hounonj@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: admin,dashboard,datatables,fastapi,mongoengine,odmantic,sqlalchemy,sqlmodel,starlette
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.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.7
Requires-Dist: jinja2<4,>=3
Requires-Dist: python-multipart
Requires-Dist: starlette
Provides-Extra: dev
Requires-Dist: pre-commit<4.0.0,>=2.20.0; extra == 'dev'
Requires-Dist: uvicorn<0.22.0,>=0.20.0; extra == 'dev'
Provides-Extra: doc
Requires-Dist: mkdocs-material<10.0.0,>=9.0.0; extra == 'doc'
Requires-Dist: mkdocs-static-i18n<0.54.0,>=0.53.0; extra == 'doc'
Requires-Dist: mkdocs<2.0.0,>=1.4.2; extra == 'doc'
Requires-Dist: mkdocstrings[python]<0.21.0,>=0.19.0; extra == 'doc'
Provides-Extra: i18n
Requires-Dist: babel>=2.12.1; extra == 'i18n'
Provides-Extra: test
Requires-Dist: aiomysql<0.2.0,>=0.1.1; extra == 'test'
Requires-Dist: aiosqlite<0.19.0,>=0.17.0; extra == 'test'
Requires-Dist: arrow<1.3.0,>=1.2.3; extra == 'test'
Requires-Dist: asyncpg<0.28.0,>=0.27.0; extra == 'test'
Requires-Dist: backports-zoneinfo; python_version < '3.9' and extra == 'test'
Requires-Dist: black==22.12.0; extra == 'test'
Requires-Dist: colour<0.2.0,>=0.1.5; extra == 'test'
Requires-Dist: coverage<7.3.0,>=7.0.0; extra == 'test'
Requires-Dist: fasteners==0.18; extra == 'test'
Requires-Dist: httpx<0.24.0,>=0.23.3; extra == 'test'
Requires-Dist: itsdangerous<2.2.0,>=2.1.2; extra == 'test'
Requires-Dist: mongoengine<0.28.0,>=0.25.0; extra == 'test'
Requires-Dist: mypy==1.1.1; extra == 'test'
Requires-Dist: odmantic<0.10.0,>=0.9.0; extra == 'test'
Requires-Dist: passlib<1.8.0,>=1.7.4; extra == 'test'
Requires-Dist: phonenumbers<8.14.0,>=8.13.3; extra == 'test'
Requires-Dist: pillow<9.5.0,>=9.4.0; extra == 'test'
Requires-Dist: psycopg2-binary<3.0.0,>=2.9.5; extra == 'test'
Requires-Dist: pydantic[email]<2.0.0,>=1.10.2; extra == 'test'
Requires-Dist: pymysql[rsa]<1.1.0,>=1.0.2; extra == 'test'
Requires-Dist: pytest-asyncio<0.21.0,>=0.20.2; extra == 'test'
Requires-Dist: pytest<7.3.0,>=7.2.0; extra == 'test'
Requires-Dist: ruff==0.0.254; extra == 'test'
Requires-Dist: sqlalchemy-file<0.5.0,>=0.4.0; extra == 'test'
Requires-Dist: sqlalchemy-utils<0.41.0,>=0.40.0; extra == 'test'
Requires-Dist: tinydb<4.8.0,>=4.7.0; extra == 'test'
Description-Content-Type: text/markdown

# starlette-admin

*Starlette-Admin* is a 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)

## 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))
* Try the several usage examples included in the [/examples](https://github.com/jowilf/starlette-admin/tree/main/examples) folder

## 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))


## 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 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:///test.db", connect_args={"check_same_thread": False})


# Define your model
class Post(Base):
    __tablename__ = "posts"

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


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/)

## Contributing

Thanks for your interest! Contributions are welcome.

Issues, feature requests, questions and bug reports should be reported via the issue tracker above. In particular, because StarletteAdmin aims to be well-documented, please report anything you find confusing or incorrect in the documentation.

Code or documentation improvements in the form of pull requests are also welcome. Please file or comment on an issue to allow for discussion before doing a lot of work, though.

For more details, see the [CONTRIBUTING.md file](https://github.com/jowilf/starlette-admin/blob/main/CONTRIBUTING.md).
