Django 6.1 + django CMS 5.1 base template with Notre Dame Web Theme v4 integration (in progress).
End-user documentation for content editors (how to edit pages, widgets, events, archive, site settings, and more) lives in the GitHub Wiki:
https://github.com/ND-DAC-DOME/djangocms-nd-webthemev4/wiki
Requires Docker Desktop running.
docker compose -f local.yml build
docker compose -f local.yml upApp: http://localhost:8000
Mailhog: http://localhost:8025
Create a superuser:
docker compose -f local.yml run --rm django python manage.py createsuperuserPostgreSQL 17 (Compose service postgres). SQLite is not used.
DATABASE_URL is required and is assembled by the Django entrypoint from POSTGRES_* in .envs/.local/.postgres.
docker compose -f local.yml up -d postgres redis
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements/local.txt
export DATABASE_URL=postgres://debug:debug@127.0.0.1:5432/djangocms_ndthemev4
# Publish Postgres to the host first (see local.yml ports) or use Docker-only workflow above.
python manage.py migrate- Local: django, postgres, mailhog, redis, celeryworker, celerybeat
- Production: nginx, django, postgres, redis, celeryworker, celerybeat
- Optional Okta via
OKTA_AUTH=True
Setting OKTA_AUTH=True swaps allauth for mozilla_django_oidc (app, SessionRefresh
middleware, /oidc/ urls, samplecms.auth.NDOIDCAuthBackend). These env vars are then
required:
| Variable | Required | Default |
|---|---|---|
OIDC_RP_CLIENT_ID |
yes | — |
OIDC_RP_CLIENT_SECRET |
yes | — |
OIDC_BASE_URL |
no | ND Okta authorization server |
LOGIN_REDIRECT_URL / LOGOUT_REDIRECT_URL |
no | / |
DJANGO_OIDC_CREATE_USER |
no | False |
DJANGO_OIDC_RENEW_ID_TOKEN_EXPIRY_SECONDS |
no | 900 |
mozilla-django-oidc ships in requirements/production.txt only, so install it into the
local venv before enabling OKTA_AUTH outside of production.
Reset the database and seed a full browsable demo site:
docker compose -f local.yml down -v
docker compose -f local.yml up -d
docker compose -f local.yml exec django python manage.py migrate
docker compose -f local.yml exec django python manage.py goirish --fresh --demo-superuserDemo login: admin / changeme
goirish creates Home (NDT banner + stats), News/Events/People landings with sample content, About, Archive, and the plugin/component showcase pages. Use --no-showcases for a faster seed, or --combined for a single News & Events landing page.
Re-run on an existing database with --fresh to wipe pages and rebuild.
After goirish, the plugin review pages are included automatically. To rebuild showcases only:
docker compose -f local.yml exec django python manage.py seed_plugin_showcasePages:
Re-run safely; showcase placeholders are cleared and rebuilt each time.
The component review page is included in goirish. To rebuild it only:
docker compose -f local.yml exec django python manage.py seed_components_showcasePage:
Re-run safely; the showcase placeholder is cleared and rebuilt each time.
M5 component plugins — full stable NDT4 Components library:
| Category | Plugins |
|---|---|
| NDT / Content | Accordion (+ item), Notice, Heading, Quote, Stat list (+ stat), Tabs (+ panel), List (+ item), Table, Timeline (+ item), FAQ (+ item), Dialog, Footnote list (+ item), Button, Byline, Icon, Sticker, Social share, Video button |
| NDT / Layout | Banner (+ image, accordion panel, cards, gallery child), Page header, Nav anchor (+ item), Pagination (+ item), Button group/list (+ item), Icon button, Lede button |
| NDT / Cards | Card list, Card grid; Default, News, Event, Featured, People, Media mention, Media mention (quoted), Byline item |
| NDT / Media | Gallery (+ item), Image single, Image multiple (+ item), Video, Avatar |
| NDT / Forms | Form (+ field), Search form |
P0 chrome (template-level, not duplicate plugins): breadcrumb, page title placeholder, primary/sidebar navigation, site header/footer.
Deferred (Storybook coming or unstable): Banner group, button group border/active variants, news card image-right.
After adding new plugin classes, restart the Django container so they register in the plugin pool.
- CSS:
https://conductor.nd.edu/stylesheets/themes/ndt/4.0/ndt.css - JS:
https://conductor.nd.edu/javascripts/themes/ndt/4.0/ndt.js - Docs: https://webtheme.nd.edu/