Second brand of the platform
An isolated instance for a separate client
Launched in 2026
Sole developer: instance isolation, audit trail, rollout
Problem
Another organiser needed the same product: its own brand, its own staff, its own money. Plus an audit requirement — every action must show who changed what.
Solution
Isolation at the instance level rather than a shared schema: a separate database, its own Gunicorn on its own port, its own Nginx, systemd and PM2 configuration. Everything brand-specific moved into database-backed settings plus a rebranding management command, so rolling out a new brand is a repeatable procedure instead of hand edits across the repository. On top of that, a single action log: UUID key, category, action, severity, target model and id, old and new value in JSONB, IP, user agent, request method and path, indexes for querying and per-period archiving to a file.
Why this way
Two organisers are two legal entities with separate money. Row-level isolation in a shared database rests on discipline: one forgotten filter in a queryset and another tenant's sales are visible. I deliberately traded deployment convenience for a hard isolation guarantee. One unified log instead of a separate log per module means the audit has one query, one index and one diff format.
Result
The second brand launched on the same codebase and ran a full sales season; the rollout procedure is documented and repeatable. The client is under NDA — I do not name them, but I am happy to walk through the architecture on a call.