stalance/services/web-platforms

One codebase. Many storefronts. Zero forks.

Multi-tenant is easy to draw and hard to run. We build platforms where a new site is configuration, tenants cannot see each other’s data, and one deploy upgrades everyone safely.

Describe your platform problem See the platform we run

in production
For our own 20+ storefronts
reach
8 countries
isolation
A database per storefront where it matters
launch gate
Checks run as code before every go-live

What we build

Host-based tenancyEvery request resolves its host to a tenant before anything else runs. Routes and access rules branch on that.
A database per tenantWhere isolation matters, each tenant gets its own database, switched in per request and per background job.
Declarative site profilesA base per vertical and country, plus one level of overrides. A new site is a profile, not a branch.
Theming and localisationPer-tenant themes, translations and number and date formats, with fallbacks that are visible instead of silent.
Scoped admin areasOperators see their own tenant and nothing else. Access rules are tested, not assumed.
Launch checks as codeA site is evaluated against a written list before it goes live, and the list can go red.

How we would approach yours

01 mapMap the tenantsWhat differs between sites, and what must never differ. A short written model.
02 isolateChoose the isolationShared tables, schema or database per tenant, decided by risk and cost, not fashion.
03 profileMake a site a profileConfiguration with inheritance, so the tenth site costs less than the second.
04 gateGate every launchLaunch checks that run in CI and again before go-live.

Questions engineers ask us

Do we need a database per tenant?

Not always. We choose per problem: shared tables with strict scoping are cheaper, a database per tenant is safer. We write down why.

Can you split an existing site into tenants?

Yes. We start by finding what is really shared, which is usually less than the codebase suggests.

What happens to our existing forks?

We migrate one at a time behind the same checks, so the old and new sites can be compared before the switch.

Tell us what is broken

One paragraph is enough. An engineer reads it, not a ticket bot.

Talk to an engineer