Metadata-Version: 2.3
Name: starlette-admin
Version: 0.14.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.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.8
Requires-Dist: jinja2<4,>=3
Requires-Dist: python-multipart
Requires-Dist: starlette
Provides-Extra: cov
Requires-Dist: coverage[toml]<7.4.0,>=7.0.0; extra == 'cov'
Provides-Extra: dev
Requires-Dist: pre-commit<4.0.0,>=2.20.0; extra == 'dev'
Requires-Dist: uvicorn<0.26.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.57.0,>=0.53.0; extra == 'doc'
Requires-Dist: mkdocs<2.0.0,>=1.4.2; extra == 'doc'
Requires-Dist: mkdocstrings[python]<0.25.0,>=0.19.0; extra == 'doc'
Provides-Extra: i18n
Requires-Dist: babel>=2.13.0; extra == 'i18n'
Provides-Extra: test
Requires-Dist: aiomysql<0.3.0,>=0.1.1; extra == 'test'
Requires-Dist: aiosqlite<0.20.0,>=0.17.0; extra == 'test'
Requires-Dist: arrow<1.4.0,>=1.2.3; extra == 'test'
Requires-Dist: asyncpg<0.30.0,>=0.27.0; extra == 'test'
Requires-Dist: backports-zoneinfo; (python_version < '3.9') and extra == 'test'
Requires-Dist: black==24.1.1; extra == 'test'
Requires-Dist: colour<0.2.0,>=0.1.5; extra == 'test'
Requires-Dist: fasteners==0.19; extra == 'test'
Requires-Dist: httpx<0.27.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.8.0; 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.6.0,>=9.4.0; extra == 'test'
Requires-Dist: psycopg2-binary<3.0.0,>=2.9.5; extra == 'test'
Requires-Dist: pydantic[email]<2.6.0,>=1.10.2; extra == 'test'
Requires-Dist: pymysql[rsa]<1.2.0,>=1.0.2; extra == 'test'
Requires-Dist: pytest-asyncio<0.24.0,>=0.20.2; extra == 'test'
Requires-Dist: pytest<7.5.0,>=7.2.0; extra == 'test'
Requires-Dist: ruff==0.1.15; extra == 'test'
Requires-Dist: sqlalchemy-file<0.7.0,>=0.5.0; extra == 'test'
Requires-Dist: sqlalchemy-utils<0.42.0,>=0.40.0; extra == 'test'
Requires-Dist: sqlmodel<0.15.0,>=0.0.11; extra == 'test'
Requires-Dist: tinydb<4.9.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
* 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 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/)
- [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)
