Skip to main content

Modern admin panel framework for Litestar with Cloudflare-inspired UI

Project description

litestar-admin

CI PyPI version Python versions License: MIT

Modern admin panel framework for Litestar applications with a Cloudflare-inspired UI.

litestar-admin provides a production-ready admin interface for managing SQLAlchemy models in Litestar applications, featuring:

  • Cloudflare Dashboard-inspired UI - Modern dark theme with clean card layouts

  • Full CRUD Operations - Create, read, update, delete with bulk actions

  • RBAC Authorization - Role-based access control with granular permissions

  • Audit Logging - Track all admin actions for compliance

  • SQLAlchemy Integration - Works with SQLAlchemy 2.x and Advanced-Alchemy

  • Auto-discovery - Automatically discovers and registers models

  • JWT & OAuth2 Authentication - Flexible, pluggable auth backends

  • Static Export Frontend - Next.js frontend with no runtime Node.js required

    Examples

image image
image image

Installation

# Basic installation
pip install litestar-admin

# With JWT authentication
pip install litestar-admin[jwt]

# With OAuth support
pip install litestar-admin[oauth]

# With sqladmin bridge
pip install litestar-admin[sqladmin]

# All extras
pip install litestar-admin[all]

Quick Start

Point the plugin at your app and it picks up your SQLAlchemy models automatically:

from litestar import Litestar
from litestar_admin import AdminPlugin, AdminConfig
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column


class Base(DeclarativeBase):
    pass


class User(Base):
    __tablename__ = "users"

    id: Mapped[int] = mapped_column(primary_key=True)
    email: Mapped[str] = mapped_column(unique=True)
    name: Mapped[str]


app = Litestar(
    plugins=[AdminPlugin(config=AdminConfig(title="My Admin"))]
)

That's it. Auto-discovery finds your models, builds column lists from the table schema, makes string columns searchable, and gives you full CRUD. No boilerplate view classes required.

Customizing a Model View

When you need more control over how a model looks or behaves in the admin, create a ModelView subclass. Auto-discovery skips any model that already has an explicit view registered.

from litestar_admin import ModelView

class UserAdmin(ModelView, model=User):
    column_list = ["id", "email", "name", "created_at"]
    column_exclude_list = ["password_hash"]
    column_searchable_list = ["email", "name"]
    column_default_sort = ("created_at", "desc")

    can_create = True
    can_edit = True
    can_delete = False

    page_size = 25

Pass it in via views=:

AdminConfig(
    title="My Admin",
    views=[UserAdmin],
)

Any models without an explicit view still get auto-discovered.

RBAC Guards

from litestar_admin.guards import require_permission, Permission

@get("/admin/users", guards=[require_permission(Permission.MODELS_READ)])
async def list_users() -> list[User]:
    ...

@post("/admin/users", guards=[require_permission(Permission.MODELS_WRITE)])
async def create_user(data: UserCreate) -> User:
    ...

Development

# Clone the repository
git clone https://github.com/JacobCoffee/litestar-admin.git
cd litestar-admin

# Install development dependencies
make dev

# Run tests
make test

# Run linting
make lint

# Build frontend
make frontend

# Build documentation
make docs

Documentation

Full documentation is available at jacobcoffee.github.io/litestar-admin.

Related Projects

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

litestar_admin-0.1.1.tar.gz (172.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

litestar_admin-0.1.1-py3-none-any.whl (222.1 kB view details)

Uploaded Python 3

File details

Details for the file litestar_admin-0.1.1.tar.gz.

File metadata

  • Download URL: litestar_admin-0.1.1.tar.gz
  • Upload date:
  • Size: 172.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for litestar_admin-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7e977f61b802bad7be30d2cd2b95fad9460be9a505017ead847a873c954302b5
MD5 b3336f7a638104cfa1b4ddb7e7f3fff0
BLAKE2b-256 05007e8a2d7a38c4fc76df605a07089f5fdcb428bedb1e8b4bdc264e36600b09

See more details on using hashes here.

Provenance

The following attestation bundles were made for litestar_admin-0.1.1.tar.gz:

Publisher: publish.yml on JacobCoffee/litestar-admin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file litestar_admin-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: litestar_admin-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 222.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for litestar_admin-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 76b56e89c395852f42ab9dd53af0c719100da1997405b6e7ae99583af52e0bfe
MD5 f929fc17f6b69edb687804ce2860b0e4
BLAKE2b-256 aaa7642573dfad22ed325ce58680c7fc67ea384ab040739d657e7cc6919c16fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for litestar_admin-0.1.1-py3-none-any.whl:

Publisher: publish.yml on JacobCoffee/litestar-admin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page