Tap a physician below. The layout holds still, only the identity, palette, and product mix change, the way it would for each real tenant.
One address, one tenant. Each physician gets their own subdomain or custom domain. Middleware reads it and resolves a tenant row.
Theme, not template. Logo mark, accent color, physician name and photo, and the stocked product list all come from that tenant row, loaded server side and rendered into the same shell.
Data stays separated. Every table carries a tenant_id. No storefront can render or query another physician's data by accident.
One deploy, every tenant. Adding a new physician is a new database row, not a new build or a new deploy.