The Problem
Django's default admin interface is functional but dated. Teams shipping internal tools or client portals often need a more polished UI without building a custom frontend, and styling Django admin manually is time-consuming and hard to maintain across versions.
What This Does
django-unfold is a drop-in theme for Django admin built on Tailwind CSS. It replaces the default admin templates with a modern interface that includes dark mode, sidebar navigation, and reusable UI components like cards, charts, and tables. The core theme lives in src/unfold/ with template overrides in src/unfold/templates/ and components defined in src/unfold/components.py.
Beyond the visual refresh, the package adds practical admin tooling: custom filters (autocomplete, numeric, datetime) in src/unfold/contrib/filters/, inline tab navigation in src/unfold/contrib/inlines/, and a command palette for quick model search. It also ships integration layers for popular packages like django-import-export, django-guardian, and django-simple-history, each with its own template overrides under src/unfold/contrib/.
Documentation is extensive—82 files covering installation, configuration, components, and integrations. The project is actively maintained with a 3.6k-star upstream repo and a clear release process via GitHub Actions.
How To Use It
Setup: Install via pip, then add unfold to INSTALLEDAPPS before django.contrib.admin in your Django settings file. The package is Python-only; the package.json is for building the theme's Tailwind assets, not for runtime use.
Configuration: Settings are handled in Django's settings.py. Key options include site title, sidebar navigation, and color scheme. The UNFOLD dict in settings controls most behavior—see docs/configuration/settings.md for the full list.
Running it: No separate server or build step. Run your normal Django dev server:
pip install django-unfold Add 'unfold' to INSTALLEDAPPS in settings.py python manage.py runserver
For production, collect static files as usual: python manage.py collectstatic.
Real-World Use
A team managing a customer support portal with ~20 models can install Unfold, configure the sidebar in settings.py, and immediately get a navigable, dark-mode-capable admin. The built-in filters in src/unfold/contrib/filters/ let them add date-range and autocomplete filters to the order list without writing custom admin code. If they use django-import-export for CSV uploads, the integration templates in src/unfold/contrib/import_export/ handle the styling automatically.
Code Health & Issues
Bugs / risks: Med - The src/unfold/contrib/filters/ module bundles third-party JS (noUiSlider, wNumb) without version pinning or checksums; supply-chain risk if the upstream files change. Low - Only 1 test file found in the repo, despite CI workflows for lint and test. The test suite appears thin relative to the feature surface area.
SDLC & code violations: Med - No license file detected in the root despite a LICENSE.md being listed—verify it's actually present and valid before commercial use. Low - The repo relies on a pre-commit config and GitHub Actions for quality gates; that's good hygiene, but the single test file suggests coverage is minimal. Low - docs/ is large and well-structured, but the README's feature list is long and would benefit from a quick-start section pointing to the most common setup path.
The Bottom Line
This is a mature, well-documented admin theme that solves a real pain point for Django teams. The main risk is the thin test coverage and bundled third-party assets, but for a UI theme that's acceptable in practice. If you're building a Django admin that non-developers will use daily, this is worth adopting.