Skip to main content

A modern Django dashboard built with DaisyUI

Project description

django3-dash

A modern Django admin dashboard built with DaisyUI and Tailwind CSS.

Django Python License PyPI


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

  1. Navigate to Dashboard → Theme Colors in the admin sidebar
  2. Toggle Enable custom theme ON
  3. 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 / Backgroundbase-100, base-200, base-300, base-content
    • Semantic — Info, Success, Warning, Error
  4. 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

  1. Go to Dashboard → Dashboard widgets in admin
  2. Choose a Model (any registered model)
  3. Pick a Chart Type
  4. For time-based charts, set a Date Field (e.g. created_at) and Group By (day/week/month/year)
  5. For aggregate charts, set Aggregate (count/sum/avg/max/min) and optional Aggregate Field
  6. 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


Download files

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

Source Distribution

django3_dash-2.0.1.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

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

django3_dash-2.0.1-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

File details

Details for the file django3_dash-2.0.1.tar.gz.

File metadata

  • Download URL: django3_dash-2.0.1.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.3

File hashes

Hashes for django3_dash-2.0.1.tar.gz
Algorithm Hash digest
SHA256 29a397c1fdf00de0d2d283eb397ad9d6951f814ae0dc831976efda2ee0a9a9d1
MD5 3688616c06a7714d3b2f624df2550bd8
BLAKE2b-256 21b0396e9ceed27eb05a7e919fc3bb499edc98c2909cfc83b1df379e4198f9d7

See more details on using hashes here.

File details

Details for the file django3_dash-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: django3_dash-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.3

File hashes

Hashes for django3_dash-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 01f7fdadc344d362523570d27cd70457b023449f8bac85f065ce9503ae67d69a
MD5 8bc45da4ba0dda47845db75eb8b106e4
BLAKE2b-256 f736ba2ca4a0c349f9af4054a0cdfff9434165d4982764dd634a1f1b1bff2e41

See more details on using hashes here.

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