A plugin that integrates Starlette Admin with Litestar, providing a powerful and flexible admin interface for your Litestar applications.
This project is inspired by and based on SQLAdmin Litestar Plugin by Peter Schutt.
- Seamless integration with Starlette Admin
- Support for both sync and async SQLAlchemy engines
- Advanced Alchemy integration with UUID7 support
- Customizable admin interface
- Authentication support
- I18n support
pip install starlette-admin-litestar-plugin
from litestar import Litestar
from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from starlette_admin.contrib.sqla import ModelView
from starlette_admin_litestar_plugin import StarlettAdminPluginConfig, StarletteAdminPlugin
# Create engine and models
engine = create_async_engine("sqlite+aiosqlite:///:memory:")
class Base(DeclarativeBase):
pass
class Product(Base):
__tablename__ = "products"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]
price: Mapped[int]
# Configure admin
admin_config = StarlettAdminPluginConfig(
views=[ModelView(Product)],
engine=engine,
title="My Admin",
)
# Create app
app = Litestar(
plugins=[StarletteAdminPlugin(starlette_admin_config=admin_config)]
)
from advanced_alchemy.base import UUIDv7AuditBase
from pydantic import BaseModel, Field
from starlette_admin_litestar_plugin.ext.advanced_alchemy import UUIDModelView
# Define model with UUID and audit
class Product(UUIDv7AuditBase):
__tablename__ = "products"
name: Mapped[str]
price: Mapped[int]
# Optional: Add validation
class ProductInput(BaseModel):
name: str = Field(..., max_length=100)
price: int = Field(..., ge=0)
# Configure admin with UUID support
admin_config = StarlettAdminPluginConfig(
views=[UUIDModelView(Product, pydantic_model=ProductInput)],
engine=engine,
title="Advanced Admin",
)
app = Litestar(
plugins=[StarletteAdminPlugin(starlette_admin_config=admin_config)]
)
See advanced-alchemy repo for more info.
Option | Type | Description | Default |
---|---|---|---|
views | Sequence[ModelView] | List of admin views | [] |
engine | Engine | AsyncEngine | SQLAlchemy engine | Required |
title | str | Admin interface title | "Admin" |
base_url | str | Base URL path | "/admin" |
auth_provider | BaseAuthProvider | Authentication provider | None |
i18n_config | I18nConfig | Internationalization config | None |
For more configuration options and features, please refer to the Starlette Admin documentation.
Contributions are welcome! Please feel free to submit a Pull Request.