One console, many companies
How a single operations console serves separate companies without ever crossing their data: contracts, isolation, and failing closed.
We built an operations console for one company and a second company immediately needed the same thing. The tempting move is to fork the code. The right move is to make separation a property of the architecture.
A contract, not a copy
Every company's database implements the same fourteen-key feed. The console reads the contract, never the company's tables directly. A check fails the build if any implementation drifts from the contract, so a change for one company cannot silently break another.
Isolation by deployment
One codebase, separate deployments. Each deployment reads only its own company's database and sends only through its own mail function, which owns that company's signature. There is no shared runtime state to leak.
Brand as variables
Twelve color variables and nine panel types. No component names a color. Each deployment looks like its own company because the theme is data, not code.

Fail closed
Sign-in is restricted to the company's own domain, membership is re-checked on every request, and if the allowlist is ever empty the console refuses everyone. The safe failure is a locked door, never an open one.
The result is a product rather than a project: the next operation is a configuration, not a rebuild.



