Skip to main content

htmx-powered theme + helpers for django.contrib.admin. Picnic CSS, native HTML5 widgets, two mandatory dependencies.

Project description

django-yp-admin

An htmx-powered theme + helpers for django.contrib.admin. Two dependencies. Zero jQuery.

django-yp-admin is an htmx-powered admin theme plus a small set of helpers for django.contrib.admin. It ships template overrides (Picnic CSS, native HTML5 widgets, htmx) and a handful of reusable abstract models and admin mixins (OrderedModel, SingletonModel, lightweight history, htmx widgets). It is not a full drop-in replacement for django.contrib.admin — it layers on top of the stock AdminSite.

Status: v0.1, pre-alpha. ~19 tests in the suite. We have not yet validated against custom AdminSite subclasses or third-party admin packages (django-cms, wagtail, allauth, django-guardian, django-polymorphic, etc.). API will change.

What you get

  • htmx-powered theme. Template overrides for changelist/change form/login. Picnic CSS base, themable via CSS custom properties. Dark mode via prefers-color-scheme.
  • No jQuery. ~62KB gzipped of total JS instead of ~250KB of jQuery + Select2 + xregexp.
  • Two mandatory deps. Django + django-htmx. Optional extras when you want them.
  • Native HTML5. <input type="date">, <dialog>, <details> instead of jQuery widgets.
  • Helpers (opt-in). Abstract models and admin mixins you can mix into your own code:
    • OrderedModel + drag-and-drop admin
    • SingletonModel + admin
    • Lightweight history (Revision/Version)
    • htmx-native filters (Dropdown, DateRange, DateTimeRange, NumericRange)
    • htmx + Tom Select autocomplete widget
    • htmx-native nested/sortable inlines

What is NOT yet supported / tested

This is v0.1. The following are roadmap, not promises:

  • Custom AdminSite subclasses — untested.
  • django-cms, wagtail, allauth admin integrations — untested.
  • django-guardian (GuardedModelAdmin), django-polymorphic (PolymorphicChildModelAdmin), django-reversion (VersionAdmin), django-import-export (ImportExportModelAdmin) — not yet validated end-to-end.
  • Third-party themes that target legacy admin CSS classes — selectors are preserved as DOM hooks but not regression-tested.
  • Legacy admin JS extensions that depend on django.jQuery — will break.

If you depend on any of the above, stay on django.contrib.admin for now and watch this project.

Optional extras

pip install django-yp-admin[history]        # django-simple-history
pip install django-yp-admin[import-export]  # django-import-export
pip install django-yp-admin[full]           # all of the above

When the optional package is installed, the matching admin integration in django_yp_admin.contrib activates automatically via importlib.util.find_spec. These integrations are exercised by the test suite at a basic level — production hardening pending.

Quickstart

pip install django-yp-admin
INSTALLED_APPS = [
    "django_yp_admin",        # before django.contrib.admin
    "django.contrib.admin",
    "django_htmx",
    # ...
]

MIDDLEWARE = [
    # ...
    "django_htmx.middleware.HtmxMiddleware",
]

Open /admin/. Stock admins keep working with the new theme. To opt into htmx-native filters/widgets per model, switch your ModelAdmin base class to django_yp_admin.options.ModelAdmin.

Browser support

Modern browsers only — last 3 years of releases.

Browser Minimum
Firefox 115 (ESR, July 2023)
Chrome 115 (July 2023)
Safari 16.4 (March 2023)
Edge 115 (Chromium)

This unlocks native <dialog>, :has(), CSS nesting, container queries, reliable date inputs, and ES2022 — which is why the JS bundle is so small.

If you need legacy browser support, stick with django.contrib.admin.

Stack

Layer Tool Size (gzip)
AJAX htmx ~14KB
Local UI state (optional) Alpine.js ~15KB
Autocomplete Tom Select ~25KB
CSS base Picnic CSS ~10KB
Our code TypeScript bundled with Bun ~8KB
Total ~62KB

vs the default admin's ~250KB of jQuery + Select2 + xregexp + custom JS.

Status

v0.1, pre-alpha. ~19 tests. API will change. Star the repo, file issues, send PRs. Real-world compat reports against custom AdminSite and third-party admin packages are especially welcome.

License

MIT. © Yp Software info@ypsoftware.com.py.

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

django_yp_admin-0.1.0a1.tar.gz (126.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_yp_admin-0.1.0a1-py3-none-any.whl (137.4 kB view details)

Uploaded Python 3

File details

Details for the file django_yp_admin-0.1.0a1.tar.gz.

File metadata

  • Download URL: django_yp_admin-0.1.0a1.tar.gz
  • Upload date:
  • Size: 126.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_yp_admin-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 4c668838f362983ec13307b0251c175035722b266392fe9792dca97aebbdeba9
MD5 265c2e21cf1c5f68ec6c5b10fb30274d
BLAKE2b-256 bf14b846e13e0ac23a1f220cdcd8918c27ef836ce6819985d12c3770a5964f2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_yp_admin-0.1.0a1.tar.gz:

Publisher: publish.yml on ypsoftware/django-yp-admin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_yp_admin-0.1.0a1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_yp_admin-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 518857de01c95f6a1fe91866ccae1265825c0ada309b1fde2508f03aaedeee08
MD5 613ed6897a739222532ed9341da8b0b7
BLAKE2b-256 9fa1aa75c9148e63907d9d86e7298f60fa064cdc7cff6fb32d16d11714eecd58

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_yp_admin-0.1.0a1-py3-none-any.whl:

Publisher: publish.yml on ypsoftware/django-yp-admin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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