How it works

One request, six hops

No per-tenant infrastructure — one wildcard cert, one Lambda, one table.

01

Browser

requests either the root domain or a tenant subdomain over HTTPS.

02

DNS — Route53

One ALIAS record for the exact root domain, one wildcard ALIAS record for every subdomain — both point at the same API Gateway custom domain endpoint.

03

TLS — ACM

A single wildcard certificate covers both the root domain and every subdomain, terminated at API Gateway.

04

API Gateway

One HTTP API with a single catch-all route to one Lambda. The default execute-api endpoint is disabled, so only the two custom domains above can reach it.

05

Lambda

Reads the Host header on every request. Root domain → landing page / signup. Anything else → strip the root domain suffix to get the tenant slug.

06

DynamoDB

Single table, partition key TENANT#<slug>. Every read and write is scoped to that exact key — there's no query that could ever span two tenants, so isolation comes from the data model itself, not from an authorization check.