Skip to main content

Tests codecov PyPI version Python versions License: MIT Downloads Django Control Room Panel

Django Doom Panel

dj-doom-panel

The Django admin panel that matters.

Every project eventually asks the same question: Can it run DOOM?

Yes. Yes it can.

dj-doom-panel adds a fully playable DOOM panel to your Django admin interface. It sits right there in your sidebar, between your cache monitor and your Celery queue. Just where it belongs.


Installation

pip install dj-doom-panel dj-control-room

Add to INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    "dj_control_room_base",
    "dj_doom_panel",
    "dj_control_room",
    ...
]

Add to urls.py:

from django.urls import path, include

urlpatterns = [
    path("admin/dj-doom-panel/", include("dj_doom_panel.urls")),
    path("admin/dj-control-room-base/", include("dj_control_room_base.urls")),
    path("admin/dj-control-room/", include("dj_control_room.urls")),
    path("admin/", admin.site.urls),
]

That's it. Open your admin. Click DOOM. Enjoy.


Configuration

All settings are optional. Add a DJ_DOOM_PANEL_SETTINGS dict to your Django settings to override any of them:

DJ_DOOM_PANEL_SETTINGS = {
    "ALLOWED_GROUPS": [],
    "REQUIRE_SUPERUSER": False,
    "LOAD_DEFAULT_CSS": True,
    "EXTRA_CSS": [],
}

Access control

By default, any staff user can access the panel. The permission settings below are inherited from dj-control-room-base.

Setting Type Default Description
ALLOWED_GROUPS list[str] [] Django group names allowed to access the panel. An empty list means any staff user is allowed.
REQUIRE_SUPERUSER bool False Restrict the panel to superusers only.

Superusers always bypass group checks.

CSS

Setting Type Default Description
LOAD_DEFAULT_CSS bool True Load the shared design-system stylesheet. Set to False if a parent template already loads it.
EXTRA_CSS list[str] [] Additional stylesheets to inject. Relative paths resolve through Django's staticfiles; absolute URLs are used as-is.

Requirements


How it works

DOOM gameplay in Django admin

The panel embeds js-dos v8 — a DOSBox-powered DOS emulator that runs in the browser via WebAssembly. The game bundle (DOOM1.WAD + DOOM.EXE) is the DOOM shareware v1.9, which id Software has explicitly made freely distributable.

The bundle is shipped as a Django static file and served directly from your own application — no external CDN required. The game works offline once your static files are collected.

CSP note

If your project uses a Content Security Policy, you'll need to allow v8.js-dos.com for script-src, style-src, connect-src, and worker-src (for the js-dos emulator runtime itself).


Controls

Key Action
Arrow keys Move / turn
Ctrl Fire
Space Use / open
Shift Run
Alt + Arrow Strafe

Part of the dj-control-room ecosystem

dj-doom-panel is a plugin for dj-control-room, a framework for building operational admin panels in Django. Other panels in the ecosystem include cache inspection, Redis monitoring, and Celery queue management.

All critically important, of course.


License

MIT


DOOM is a trademark of id Software LLC. dj-doom-panel is an unaffiliated fan project and is not endorsed by id Software, ZeniMax, or Bethesda.

Download files

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

Source Distribution

dj_doom_panel-0.1.2.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

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

dj_doom_panel-0.1.2-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file dj_doom_panel-0.1.2.tar.gz.

File metadata

  • Download URL: dj_doom_panel-0.1.2.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dj_doom_panel-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5f35fc2f70c4d651bf9159b0350fb439b4be85cf4c81ae2c22c45f6ab7014971
MD5 4ff58d473115da68646d3e3a64d15024
BLAKE2b-256 d51c44ba6d884cf82b68cebc2d51844ad4de62bcd7b1828dc378b9099f76135a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dj_doom_panel-0.1.2.tar.gz:

Publisher: python-publish.yml on django-control-room/dj-doom-panel

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

File details

Details for the file dj_doom_panel-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: dj_doom_panel-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dj_doom_panel-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3be85e44581bd595353ef7791a0f7e13bf5717d29277b3c6241c84390c0dd494
MD5 5664aaf36f32cc22c3e62d6772033116
BLAKE2b-256 1b056f3e5c35e2b57152c15a2cbfa8b12b16b9bba462585f18f98d47589be59d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dj_doom_panel-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on django-control-room/dj-doom-panel

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