A modern Django dashboard built with DaisyUI
Project description
django3-dash
A modern Django admin dashboard built with DaisyUI and Tailwind CSS.
Features
- 🎨 Modern UI — DaisyUI components with Tailwind CSS
- 🌓 Dark Mode — Built-in theme selector with multiple DaisyUI themes
- 🎯 Custom Theme Colors — Admin UI to override every color (primary, secondary, neutral, base, semantic)
- 📊 Dashboard Widgets — Charts, stats, recent items (Bar, Line, Pie, Doughnut, etc.)
- 🗂️ Tabbed Inlines & Fieldsets — Organize admin forms with navigation tabs
- 🌐 RTL Support — Full Arabic, Farsi, and right-to-left language support
- 🔧 Highly Configurable — Reorder apps, add icons, hide apps from sidebar
- 📱 Responsive — Mobile-friendly sidebar and layout
Quick Start
Installation
pip install django3-dash
Settings
Add to INSTALLED_APPS in your settings.py:
INSTALLED_APPS = [
"django_dash",
"django.contrib.admin",
"django.contrib.humanize",
"django.contrib.contenttypes",
# ... your apps
]
Run migrations (for DashboardWidget and ThemeConfig models):
python manage.py migrate django_dash
Configuration
All settings are optional. Configure via DASH_SETTINGS in settings.py:
Branding
DASH_SETTINGS = {
"SITE_TITLE": "My Admin", # Browser tab title
"SITE_HEADER": "Administration", # Header in admin
"INDEX_TITLE": "Welcome back!", # Dashboard greeting
"SITE_LOGO": "/static/logo.svg", # Custom logo URL
}
Theme Selector
DASH_SETTINGS = {
"DEFAULT_THEME": "corporate", # Force a single theme
"DEFAULT_THEME_DARK": "dim", # Separate theme for dark mode
"SHOW_THEME_SELECTOR": True, # Show/hide theme picker dropdown
"THEME_LIST": [ # Available themes
{"name": "Light", "value": "light"},
{"name": "Dark", "value": "dark"},
{"name": "Corporate", "value": "corporate"},
],
}
App Sidebar
DASH_SETTINGS = {
"APPS_REORDER": {
"auth": {
"icon": "fa-solid fa-lock",
"name": "Authentication",
"hide": False,
"divider_title": "Security",
},
"polls": {
"icon": "fa-solid fa-square-poll-vertical",
"priority": 10, # Higher = appears first
},
},
}
You can also set icon, divider_title, priority, and hide directly on your AppConfig:
class PollsConfig(AppConfig):
name = "polls"
icon = "fa-solid fa-square-poll-vertical"
divider_title = "Content"
priority = 5
Extra Assets
DASH_SETTINGS = {
"EXTRA_STYLES": ["https://example.com/custom.css"],
"EXTRA_SCRIPTS": ["https://example.com/custom.js"],
"SIDEBAR_FOOTNOTE": "v2.0.0",
"DONT_SUPPORT_ME": False, # Hide GitHub link in sidebar
"LOAD_FULL_STYLES": False, # Load full DaisyUI (needed for custom themes)
}
Dashboard
DASH_SETTINGS = {
"SHOW_SIDEBAR": True,
"SHOW_KEY_METRICS": True,
"SHOW_RECENT_ACTIVITY": True,
"SHOW_WORKSPACE": True,
"ENABLE_CHART_ANIMATIONS": True,
"CHART_ANIMATION_DURATION": 800, # milliseconds
"LIST_PER_PAGE": 20,
"SHOW_CHANGELIST_FILTER": False, # Auto-open filter sidebar
}
Static Theme Override (no admin UI)
If you prefer hardcoding colors without the admin interface:
DASH_SETTINGS = {
"CUSTOM_THEME_COLORS": {
"primary": "#4f46e5",
"primary-focus": "#4338ca",
"secondary": "#0ea5e9",
"neutral": "#1e293b",
"base-100": "#ffffff",
"base-200": "#f1f5f9",
"base-300": "#e2e8f0",
"base-content": "#0f172a",
},
}
Accepted CSS color formats: hex (#4f46e5), oklch (oklch(0.42 0.19 265)), rgb, hsl.
Custom Theme Colors (Admin UI)
New in 0.4.0 — Manage theme colors from the Django admin panel.
After running migrations, a Theme Colors entry appears under the Dashboard section in admin.
How it works
- Navigate to Dashboard → Theme Colors in the admin sidebar
- Toggle Enable custom theme ON
- Pick colors for any of the 21 DaisyUI color slots:
- Brand — Primary, Secondary, Accent (and their focus/content variants)
- Neutral — Neutral (and focus/content)
- Base / Background —
base-100,base-200,base-300,base-content - Semantic — Info, Success, Warning, Error
- Click Save
Colors you leave empty will fall through to the active DaisyUI theme's defaults.
Reset
Click Reset to Default to clear all overrides and disable the custom theme.
Live Preview
Changes take effect immediately on save — refresh any admin page to see your new colors.
Dashboard Widgets
Create dynamic charts and stats for your admin dashboard home page.
Available Chart Types
| Type | Description |
|---|---|
bar |
Vertical bar chart |
line |
Line chart |
pie |
Pie chart |
doughnut |
Doughnut chart |
polar |
Polar area chart |
radar |
Radar chart |
number |
Large stat counter |
recent |
Recent items list |
Usage
- Go to Dashboard → Dashboard widgets in admin
- Choose a Model (any registered model)
- Pick a Chart Type
- For time-based charts, set a Date Field (e.g.
created_at) and Group By (day/week/month/year) - For aggregate charts, set Aggregate (count/sum/avg/max/min) and optional Aggregate Field
- Static charts: fill Custom Labels and Custom Data (one per line)
Tabbed Interface
Tabbed Inlines
from django_dash.mixins import NavTabMixin
class ChoiceInline(admin.TabularInline, NavTabMixin):
model = Choice
extra = 1
@admin.register(Poll)
class PollAdmin(admin.ModelAdmin):
inlines = [ChoiceInline]
Tabbed Fieldsets
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
fieldsets = (
(None, {"fields": ("username", "password")}),
("Profile", {
"fields": ("first_name", "last_name", "email"),
"classes": ("navtab",), # ← Creates a tab
}),
("Permissions", {
"fields": ("is_active", "is_staff"),
"classes": ("navtab",),
}),
)
Language Switching
# urls.py
urlpatterns = [
path("i18n/", include("django.conf.urls.i18n")),
# ...
]
# settings.py
MIDDLEWARE = [
"django.middleware.locale.LocaleMiddleware",
# ...
]
LANGUAGES = [
("en", "English"),
("fa", "فارسی"),
("ar", "العربية"),
]
License
MIT License. See LICENSE.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django3_dash-2.0.0.tar.gz.
File metadata
- Download URL: django3_dash-2.0.0.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
807e886de3491f1a0560937bb9e2a81077d1f3bd0553e6764834d7d42f7b19d9
|
|
| MD5 |
041301adaaa7a6b074ab98f232eef13a
|
|
| BLAKE2b-256 |
12429d272eabcd7e0fa389aebbe3d4534727ecade274b1e803b973d51d3f1028
|
File details
Details for the file django3_dash-2.0.0-py3-none-any.whl.
File metadata
- Download URL: django3_dash-2.0.0-py3-none-any.whl
- Upload date:
- Size: 2.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3b8fc830e9bfda334c5088bfa7ccc2013d66edf2b4686063d37c9eb88039c58
|
|
| MD5 |
f89c095428875452d2b380694d5cdfed
|
|
| BLAKE2b-256 |
b45758ff2f1d77090609c7e00daa575183d0ece603a6962286cd432b048594f4
|