Concepts & Theory

The Systems pages explain what each app does. This section explains the cross-cutting theory and patterns that recur across the whole codebase — the things you need to internalize to make changes that fit Midsummer’s design.

The big ideas at a glance

  • Schema-based multi-tenancy — one database, one schema per tenant org, a public schema for shared data. No separate deployments.

  • Request resolution — the three custom middleware classes that turn a hostname into (tenant, event, schema, URLconf), plus the sanitized ?next= login-redirect handling.

  • The custom form system — the JSON-schema form builder that powers registration, vendor, schedule, and shop forms. The signature opinionated subsystem of Midsummer.

  • Permissions — per-app Django permissions + event admin roles, resolved through check_permission(...), with a permissive leadership/department model.

  • Payments — Stripe for everything; products/prices auto-managed in model save() overrides; webhook confirmation.

  • Audit logging & the snapshot pattern — append-only log models and the “admin tools mutate the snapshot” principle.

  • Real-time (WebSockets) — Django Channels over Hypercorn for jury voting and staff ping.

Tip

These pages are the synthesis of the authoritative memory-bank deep-dive docs (architecture, data-models, backend-api, frontend-structure) that live in documentation/. When you need the exhaustive detail, follow the links from the Reference section.