Skip to main content

A modern, extensible, premium Django admin framework.

Project description

django-admin-forge

django-admin-forge is a modern, customizable Django admin framework for serious SaaS and enterprise apps.

It keeps Django admin's reliability and model integration, while upgrading the UI/UX, theming, and developer customization surface.

Highlights

  • Django-first admin replacement (AdminSite-based)
  • Branded login and modern dashboard
  • Customizable sidebar menus and app/model navigation
  • Dark, light, and system themes
  • Accent color system
  • Improved changelist, filters, bulk actions, and empty states
  • Improved add/edit form layout

Install

From PyPI:

pip install django-admin-forge

If you previously tried the django-forge distribution name, switch to this package: update INSTALLED_APPS and imports to django_admin_forge, rename settings DJANGO_ADMIN_FORGE, then pip uninstall django-forge (if installed) and install as above.

From a wheel or sdist you built locally:

python -m pip install build
python -m build
pip install dist/django_admin_forge-*.whl

Develop this repository (editable install, tests, lint):

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Publishing to PyPI

  1. Configure PyPI credentials (for example upload with twine or uv publish).
  2. Bump version in pyproject.toml.
  3. Install build tools: pip install ".[publish]" (or pip install build twine).
  4. Run python -m build, then twine check dist/* and twine upload dist/*.

Use TestPyPI first if you want a dry run: twine upload --repository testpypi dist/*.

Quick Integration

1) Add apps

INSTALLED_APPS = [
    "django_admin_forge",
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    # your apps...
]

2) Use Forge admin URLs

from django.urls import path
from django_admin_forge.site import forge_admin_site

urlpatterns = [
    path("admin/", forge_admin_site.urls),
]

3) Configure DJANGO_ADMIN_FORGE (optional but recommended)

DJANGO_ADMIN_FORGE = {
    "brand_name": "Forge Admin",
    "brand_logo_text": "FORGE",
    "brand_tagline": "Modern Django operations panel",
    "accent_color": "green",
    "default_theme": "system",  # "light" | "dark" | "system"
    "show_sidebar_search": True,
    "enable_command_bar": True,
}

Configuration Reference

Use the DJANGO_ADMIN_FORGE setting dictionary.

  • brand_name (str): Header brand name.
  • brand_logo_text (str): Compact sidebar/logo text.
  • brand_tagline (str): Login/subtitle branding.
  • accent_color (str): Accent token used in key actions and highlights.
  • default_theme ("light" | "dark" | "system"): Initial theme mode.
  • show_sidebar_search (bool): Sidebar search input visibility.
  • enable_command_bar (bool): Header search/command input visibility.
  • menu_icons (dict[str, str]): Overrides for app/model icons.
  • menu_tabs (list[dict]): Sidebar menu tabs (top and bottom areas).
  • dashboard_analytics_cards (list[dict]): Override dashboard KPI cards for marketing/business snapshots.

Accent Colors

Supported accent_color values:

blue, green, amber, violet, emerald, teal, cyan, sky, indigo, purple, pink, rose, red, orange, yellow, lime, slate, gray, zinc, neutral, stone

Example:

DJANGO_ADMIN_FORGE = {
    "accent_color": "rose",
}

Sidebar Menus (menu_tabs)

By default, only Dashboard is shown.

You can fully configure sidebar tabs:

DJANGO_ADMIN_FORGE = {
    "menu_tabs": [
        {"label": "Dashboard", "url_name": "admin:index", "icon": "layout-grid"},
        {"label": "Applications", "url_name": "admin:forge-applications", "icon": "layers"},
        {"label": "Users", "url_name": "admin:auth_user_changelist", "icon": "user"},
        {"label": "Documentation", "url": "/docs/", "icon": "external-link"},
    ]
}

Each tab supports:

  • label (required)
  • url_name (reverse name) or url (direct URL)
  • icon (optional, defaults to layout-grid)

Menu Icon Overrides (menu_icons)

You can override app/model icons by key:

DJANGO_ADMIN_FORGE = {
    "menu_icons": {
        "auth": "shield",                # app-level
        "auth.user": "user",             # model-level
        "auth.group": "users",
        "demo_app.customer": "building",
    }
}

Resolution order:

  1. app_label.model_name
  2. model_name
  3. app_label
  4. built-in defaults

Dashboard Analytics Cards

You can supply custom KPI cards for the dashboard hero section using real model data:

DJANGO_ADMIN_FORGE = {
    "dashboard_analytics_cards": [
        {
            "label": "Customers",
            "app_label": "demo_app",
            "model": "Customer",
            "metric": "count",
            "icon": "users",
            "hint": "Total customer records",
        },
        {
            "label": "Active customers",
            "app_label": "demo_app",
            "model": "Customer",
            "metric": "count",
            "queryset_filter": {"is_active": True},
            "icon": "activity",
            "hint": "is_active = true",
        },
    ]
}

Each card supports:

  • label (required)
  • app_label and model for dynamic model-based metrics
  • metric (currently supports count)
  • queryset_filter (optional exact Django ORM filters)
  • value (optional fallback/manual value)
  • icon
  • hint (or trend)

Demo Project (this repo)

python demo/manage.py migrate
python demo/manage.py createsuperuser
python demo/manage.py runserver

Open: http://127.0.0.1:8000/admin/

Status and Roadmap

Current implementation includes custom site templates, dashboard, apps page, collapsible sidebar, filters modal, improved forms/changelists, search helpers, and theme controls.

Planned next:

  • Saved views/filters
  • Dashboard widget API expansion
  • Accessibility and keyboard navigation improvements
  • Packaging/build pipeline polish for production release

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_admin_forge-0.1.0.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

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

django_admin_forge-0.1.0-py3-none-any.whl (35.0 kB view details)

Uploaded Python 3

File details

Details for the file django_admin_forge-0.1.0.tar.gz.

File metadata

  • Download URL: django_admin_forge-0.1.0.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for django_admin_forge-0.1.0.tar.gz
Algorithm Hash digest
SHA256 84b60c9c9a932a673be8bbf45ec481f15648a6dcfb5e5c191a5673ea6e730d3f
MD5 8de48ec3f017238bfacb50f0415a2c08
BLAKE2b-256 be25ef9fc1b35965ac837e2a636414557acc911b5441f087ff8f340a0a19f6d2

See more details on using hashes here.

File details

Details for the file django_admin_forge-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_admin_forge-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 47b6cebd7e14be6c1f7eebfcf6c538cbfbb9a7eba0fead1c743cd9d5c6e9ee54
MD5 e3837e14697468304ede91a0bf959e37
BLAKE2b-256 4962335b8648ab241e40fe98bf930dcd97e885a4004a107afa0b84e25f6334db

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