Tech stack

The platform: a Django + Angular multi-tenant monolith. This page is a quick orientation; the full breakdown lives in documentation/tech-stack.md and documentation/architecture.md.

At a glance

Layer

Technology

Backend language

Python 3.12

Web framework

Django 5.x

API

Django REST Framework

Real-time

Django Channels 4.x (Hypercorn ASGI)

Background jobs

Celery + Redis 7.x

Database

PostgreSQL 17.x

Payments

Stripe 2024.x

Frontend (event app)

Angular 21.x + PrimeNG 21.x + Kendo UI (ui/)

Frontend (tenant app)

Angular 19.x + PrimeNG 19.x (tenantui/)

Styling

TailwindCSS 4.x (Aura preset, indigo primary)

Build

Vite (@analogjs/vite-plugin-angular)

Object storage

S3-compatible (S3, DO Spaces, GCS, MinIO)

Email

SMTP (Mailgun/Mailchimp/BYO) via a DB-backed mailer backend

Containers

Docker / Podman

Edge

Nginx (reverse proxy + custom-domain config generation)

Processes

Supervisor

Backend queues (Celery)

Celery routes tasks to named queues:

Queue

Purpose

celery

registration tasks

bkinterface

backend-interface tasks

printmaster

printing tasks

brotherlabel

Brother label printing

receiptmanager

receipt management

badgerenderer

badge rendering

Frontend libraries of note

  • PrimeNG components + @primeng/themes (Aura) and primeicons.

  • Kendo UI for Angular — most notably the Scheduler component used by schedule-editor2.

  • Flowbite (Tailwind components), marked/ngx-markdown (Markdown), signature_pad (signatures).

  • ui/ uses PrimeNG 21; tenantui/ uses PrimeNG 19 — they are different versions, don’t share component code blindly.

Platform prerequisites (external services)

Before Midsummer is useful you need:

  • An active Stripe account (for register/vendors/shop).

  • A transactional email provider with SMTP credentials.

  • S3-compatible object storage (S3, Spaces, GCS, or self-hosted MinIO).

Operating system

Any Linux OS. Windows is not supported (and will not be). macOS works for local development.

Deep dive

  • documentation/tech-stack.md — the complete dependency list (frontend packages, Postgres/Django settings, security notes).

  • documentation/architecture.md — system architecture, source paths, key technical decisions, design patterns, critical implementation paths.