Midsummer Developer DocsΒΆ
Quickstart π
Stand up a local instance and run the dev server.
Systems π
What each application (register, vendors, staff, schedule, β¦) does.
Concepts & Theory π
The architecture: multi-tenancy, the custom form system, request resolution, payments.
Reference π
Tech stack, management commands, the backend API, and the data model.
Operational Guides π
Runbooks for adding tenants, custom domains, and updating metrics.
Agent Guide π€
Context and conventions for AI coding agents bootstrapping work on Midsummer.
Midsummer V2 is a multi-tenant monolith β a Django 5.x backend serving REST +
WebSocket APIs, with several Angular single-page apps as frontends, all over one
PostgreSQL database with per-tenant schema isolation (django-tenants).
Conventions are places for people to come together. Big tech companies take advantage of small to medium sized events. Midsummer provides the baseline of what events should be able to do without those companies. β project mission
These docs are the developer-facing companion to the product. They are written for the engineers and agents who build and operate Midsummer, not the attendees who use it. For the high-level project summary, see the project mission & features.
What youβll find hereΒΆ
Quickstart β from a clean machine to a running instance at
{{ dev_url }}, plus the day-to-day workflow and troubleshooting.Systems β a focused explainer for each Django app:
accounts,event,register,vendors,staff,schedule,shop,tenant, andkioskos.Concepts & Theory β the why behind the code: schema-based multi-tenancy, the JSON form-builder system, how a request is resolved, the permission model, Stripe payments, and audit logging.
Reference β the tech stack, every management command, the REST/WebSocket API surface, and the data model.
Operational Guides β step-by-step runbooks (onboarding a new tenant, setting up a custom domain, refreshing year-over-year metrics).
Agent Guide β a distilled orientation designed for AI coding agents to consume before working in the codebase.
A 30-second mental modelΒΆ
HTTP request
β
βΌ
TenantMainMiddleware ββ reads host βββΊ Tenant + schema switch + URLconf
OAuthDomainMiddleware ββ routes /o/* on the global OAuth domain only
EventSetupMiddleware ββ resolves request.current_event (subdomain / custom domain)
β
βΌ
/app/<module>/... ββ REST (DRF ViewSets + @api_view) βββΊ tenant schema
/api/v2026-01/... ββ versioned public API
/ws/... ββ Django Channels (jury voting, staff ping)
β
βΌ
Angular SPA ββ ui/ (Angular 21) for events Β· tenantui/ (Angular 19) for tenant admin
Ready? Start with the Quickstart.