Skip to main content

A beautiful, modern, fully redesigned Django admin template with RTL support, theming, and offline assets.

Project description

Django Simorgh

A beautiful, modern, fully redesigned Django admin interface.

Django Simorgh replaces the default Django admin UI with a complete custom design: dark sidebar, collapsible app groups, responsive tables, modern forms, RTL layout, 9 color themes, light/dark mode, and all assets bundled — no CDN required.


Features

  • Sidebar navigation with app groups and model sub-items
  • Top navbar with user profile dropdown and dark mode toggle
  • Configurable icons for apps and models (Font Awesome 6 Free)
  • 9 color themes: green, blue, red, yellow, black, purple, orange, pink, navy
  • Light and dark mode — auto-detected from OS preference, toggle-able, persisted
  • RTL support — layout direction follows Django's LANGUAGE_BIDI; the browser automatically applies Vazirmatn for Arabic/Persian text and Sniglet for Latin text via CSS unicode-range
  • Modern filters panel — clean, compact, visually consistent with the theme
  • Responsive tables with hover effects and row selection
  • Modern forms with clean fieldsets and styled inputs
  • Fully offline — Font Awesome, Vazirmatn, and Sniglet are bundled in the package
  • Configurable branding — custom logo and favicon via settings
  • Production-ready pip package

Installation

pip install django-simorgh

Django Configuration

1. Add to INSTALLED_APPS

django_simorgh must appear before your project apps and before django.contrib.admin so its custom model Meta options are registered before models are imported:

INSTALLED_APPS = [
    "django_simorgh",          # ← MUST be before django.contrib.admin
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    # ... your apps
]

2. Add context processor

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",   # required
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
                "django_simorgh.context_processors.simorgh_context",  # ← add this
            ],
        },
    },
]

3. Collect static files

python manage.py collectstatic

That's it. All fonts and icons are bundled — no external CDN calls needed.


Theme Color Configuration

# settings.py
DJANGO_ADMIN_THEME_COLOR = "green"   # default

Available values: green, blue, red, yellow, black, purple, orange, pink, navy


Branding, Logo, and Favicon Configuration

DJANGO_ADMIN_SITE_HEADER = "My Admin Panel"   # default: "Simorgh Admin"
DJANGO_ADMIN_LOGO        = "path/to/logo.png"
DJANGO_ADMIN_FAVICON     = "path/to/favicon.ico"

If logo or favicon are not set, the bundled default assets are used automatically.


Model Icon Configuration

Option 1 — Model Meta (recommended)

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=120)

    class Meta:
        simorgh_icon = "fa-solid fa-box"
        simorgh_app_icon = "fa-solid fa-store"

simorgh_icon controls the model icon. simorgh_app_icon can be defined on any model in the app and controls the sidebar app-group icon.

Because these are custom Django Meta options, keep django_simorgh before your own apps in INSTALLED_APPS.

Option 2 — Per-ModelAdmin

from django.contrib import admin
from .models import Product

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    icon = "fa-solid fa-box"   # any Font Awesome 6 Free class string

Option 3 — Via settings

DJANGO_ADMIN_ICONS = {
    "shop": {
        "_app_icon": "fa-solid fa-store",   # icon for the app group in the sidebar
        "Product":   "fa-solid fa-box",
        "Category":  "fa-solid fa-tag",
        "Order":     "fa-solid fa-receipt",
    },
    "auth": {
        "_app_icon": "fa-solid fa-shield-halved",
        "User":      "fa-solid fa-user",
        "Group":     "fa-solid fa-users",
    },
}

Keys: app_label (outer), ModelName / _app_icon (inner).

Resolution order:

  1. Model Meta.simorgh_icon
  2. ModelAdmin.icon attribute
  3. DJANGO_ADMIN_ICONS settings dict
  4. Built-in defaults for auth, admin, contenttypes, etc.
  5. Generic fallback fa-solid fa-circle-dot

Bundled Assets

All external assets are included in the package and served from your own static files after collectstatic. No CDN requests are made at runtime.

Asset License
Font Awesome 6 Free SIL OFL 1.1 / MIT / CC BY 4.0
Vazirmatn SIL OFL 1.1
Sniglet SIL OFL 1.1

RTL Support

Set LANGUAGE_CODE to a RTL language and Django's LANGUAGE_BIDI will be True automatically. The template uses this to set dir="rtl" on the <html> element, which flips the sidebar, navbar, and tables.

Font selection is handled entirely by CSS unicode-range — no settings needed:

  • Latin/English characters → Sniglet
  • Arabic/Persian characters → Vazirmatn
LANGUAGE_CODE = "fa-ir"   # RTL layout + correct fonts — no extra config needed

Screenshots

Screenshots will be added after first public release.

Dashboard Change List Change Form
Dashboard List Form

Development Setup

git clone https://github.com/username/django-simorgh
cd django-simorgh
python -m venv .venv
source .venv/bin/activate
pip install django

Create a minimal test project:

# testproject/settings.py
import sys, pathlib
sys.path.insert(0, str(pathlib.Path(__file__).parents[2]))

INSTALLED_APPS = [
    "django_simorgh",
    "django.contrib.admin",
    ...
]

Build and Publish

pip install build twine

python -m build

twine upload --repository testpypi dist/*   # test first
twine upload dist/*                          # publish to PyPI

License

MIT — 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

django_simorgh-1.0.0.tar.gz (654.1 kB view details)

Uploaded Source

Built Distribution

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

django_simorgh-1.0.0-py3-none-any.whl (656.0 kB view details)

Uploaded Python 3

File details

Details for the file django_simorgh-1.0.0.tar.gz.

File metadata

  • Download URL: django_simorgh-1.0.0.tar.gz
  • Upload date:
  • Size: 654.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for django_simorgh-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c87d89e92af7f99abe3455664b379b47ec50de9b617286a3935cdc8ff98ab935
MD5 3aba4091e4d08931f5cf7938ebae447e
BLAKE2b-256 fe912506b2a98b6eedb84113996c48226a2fd322d6b9209278086172977b3f3a

See more details on using hashes here.

File details

Details for the file django_simorgh-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: django_simorgh-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 656.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for django_simorgh-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e5f4a6cc739b7bbb49f24d400683e2029c40ab8cf56b0a5816484e5c33fcee26
MD5 2444e5188c3248c05658461b36d5f65a
BLAKE2b-256 e307ebe17a7909a6b8196c3084ce095725388003e5be6bc09b8b2952c3a3d2d5

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