Skip to content
← All articles
Engineering5 min read

What we mean by “multi-tenant” — and why it shapes everything

Every platform Aexion builds is multi-tenant: one codebase and one deployment built to serve many isolated customers, each with their own branding, data, and configuration. It sounds like an implementation detail. In practice, it's the decision that shapes almost everything else.

Isolation is not optional

The first rule is that one tenant must never see another's data. Every read is scoped by tenant, enforced at the data layer rather than left to individual queries. When the guarantee lives in one place, you can reason about it — and test it — instead of hoping every developer remembered the filter.

Configuration over forks

It's tempting to fork the code for a demanding customer. We don't. A new tenant is configuration — feature flags, branding, plan tiers — not a branch. That keeps one product improving for everyone at once.

  • Branding and theming resolve per tenant at request time.
  • Feature access is gated by plan, not by code path.
  • Identity and roles are scoped to the tenant from the token up.
Multi-tenant done well means a fix for one customer is a fix for all of them — and a regression for one would be caught before it reached any of them.

That's the bargain. More discipline up front, far less sprawl later.

Building something in this space?

We'd love to hear what you're working on — and how we might help.