Configuration Reference¶
This page provides a complete reference for all configuration options available in litestar-admin.
AdminConfig¶
The AdminConfig dataclass is the primary way to configure your admin panel. Pass it to the AdminPlugin when initializing your application.
from litestar_admin import AdminPlugin, AdminConfig
plugin = AdminPlugin(
config=AdminConfig(
title="My Admin",
base_url="/admin",
# ... more options
)
)
Basic Settings¶
title¶
Type:
strDefault:
"Admin"
The title displayed in the admin panel header and browser tab.
AdminConfig(title="My Application Admin")
base_url¶
Type:
strDefault:
"/admin"
The base URL path for the admin panel. All admin routes will be prefixed with this path.
# Admin available at /dashboard
AdminConfig(base_url="/dashboard")
# Admin available at /app/admin
AdminConfig(base_url="/app/admin")
Note
The base_url must start with / and should not end with / (except when set to just /).
logo_url¶
Type:
str | NoneDefault:
None
URL for a custom logo image displayed in the sidebar header.
AdminConfig(logo_url="/static/images/logo.png")
favicon_url¶
Type:
str | NoneDefault:
None
URL for a custom favicon.
AdminConfig(favicon_url="/static/favicon.ico")
theme¶
Type:
Literal["dark", "light"]Default:
"dark"
The color theme for the admin panel.
# Dark theme (default, Cloudflare-inspired)
AdminConfig(theme="dark")
# Light theme
AdminConfig(theme="light")
Authentication¶
auth_backend¶
Type:
AuthBackend | NoneDefault:
None
The authentication backend for securing the admin panel. When None, the admin panel is publicly accessible.
from litestar_admin.auth import JWTAuthBackend, JWTConfig
backend = JWTAuthBackend(
config=JWTConfig(secret_key="your-secret-key"),
user_loader=load_user_from_db,
)
AdminConfig(auth_backend=backend)
See Authentication for detailed authentication setup.
Model Views¶
views¶
Type:
list[type[BaseModelView]]Default:
[]
List of model view classes to register with the admin panel.
from litestar_admin import AdminConfig, ModelView
class UserAdmin(ModelView, model=User):
column_list = ["id", "email"]
class PostAdmin(ModelView, model=Post):
column_list = ["id", "title"]
AdminConfig(views=[UserAdmin, PostAdmin])
auto_discover¶
Type:
boolDefault:
True
Whether to automatically discover and register SQLAlchemy models that don’t have explicit views defined.
# Auto-discover all models (creates default views)
AdminConfig(auto_discover=True)
# Only use explicitly registered views
AdminConfig(auto_discover=False)
When enabled, the admin plugin will:
Scan for all SQLAlchemy
DeclarativeBaseclasses in your applicationFind all model classes registered with those bases
Create default views for models that don’t have explicit view classes
Skip models that already have registered views
Development¶
debug¶
Type:
boolDefault:
False
Enable debug mode for additional logging and error details.
AdminConfig(debug=True)
Warning
Do not enable debug mode in production as it may expose sensitive information.
Rate Limiting¶
rate_limit_enabled¶
Type:
boolDefault:
True
Whether to enable rate limiting on admin API endpoints.
# Disable rate limiting (not recommended for production)
AdminConfig(rate_limit_enabled=False)
rate_limit_requests¶
Type:
intDefault:
100
Maximum number of requests allowed per window.
AdminConfig(rate_limit_requests=200)
rate_limit_window_seconds¶
Type:
intDefault:
60
Rate limit window duration in seconds.
# 50 requests per 30 seconds
AdminConfig(
rate_limit_requests=50,
rate_limit_window_seconds=30,
)
Static Files¶
static_path¶
Type:
str | NoneDefault:
None
Path to a custom static files directory. When None, uses the built-in frontend.
# Use custom frontend build
AdminConfig(static_path="/path/to/custom/frontend/dist")
UI Customization¶
index_title¶
Type:
strDefault:
"Dashboard"
Title for the dashboard/index page.
AdminConfig(index_title="Overview")
Session Settings¶
Extra Settings¶
extra¶
Type:
dict[str, Any]Default:
{}
Additional custom settings for extensibility.
AdminConfig(
extra={
"custom_setting": "value",
"feature_flag": True,
}
)
Complete Example¶
Here’s a comprehensive configuration example:
from litestar_admin import AdminPlugin, AdminConfig, ModelView
from litestar_admin.auth import JWTAuthBackend, JWTConfig
# Define your model views
class UserAdmin(ModelView, model=User):
column_list = ["id", "email", "name", "is_active"]
column_searchable_list = ["email", "name"]
class PostAdmin(ModelView, model=Post):
column_list = ["id", "title", "published"]
# Create auth backend
async def load_user(user_id: str | int):
# Load user from database
...
auth_backend = JWTAuthBackend(
config=JWTConfig(
secret_key="your-secure-secret-key",
token_expiry=3600,
),
user_loader=load_user,
)
# Configure admin
config = AdminConfig(
# Basic settings
title="My Application Admin",
base_url="/admin",
logo_url="/static/logo.png",
theme="dark",
# Authentication
auth_backend=auth_backend,
# Model views
views=[UserAdmin, PostAdmin],
auto_discover=True,
# Rate limiting
rate_limit_enabled=True,
rate_limit_requests=100,
rate_limit_window_seconds=60,
# Session security
session_cookie_secure=True,
session_cookie_httponly=True,
session_cookie_samesite="lax",
# UI customization
index_title="Dashboard",
)
# Create plugin
plugin = AdminPlugin(config=config)
Environment Variables¶
You can load configuration from environment variables:
import os
AdminConfig(
title=os.getenv("ADMIN_TITLE", "Admin"),
debug=os.getenv("DEBUG", "false").lower() == "true",
rate_limit_requests=int(os.getenv("RATE_LIMIT_REQUESTS", "100")),
)
Computed Properties¶
AdminConfig provides several computed properties:
api_base_url¶
Returns the full API base URL (e.g., /admin/api).
config = AdminConfig(base_url="/admin")
print(config.api_base_url) # "/admin/api"
static_base_url¶
Returns the full static files base URL (e.g., /admin/static).
config = AdminConfig(base_url="/admin")
print(config.static_base_url) # "/admin/static"
Validation¶
AdminConfig validates settings on initialization:
# This will raise ValueError
AdminConfig(base_url="admin") # Must start with /
# This will raise ValueError
AdminConfig(rate_limit_requests=0) # Must be at least 1