# Backend Platform Deployment

## 1. Local Development Setup
Recommended local flow:
1. Start backend API (Node.js) with local tenant mappings.
2. Start frontend Angular app with proxy to backend.
3. Use local domains/hosts file entries for tenant simulation.

Example hosts mapping:
- `alpha.local` -> localhost
- `beta.local` -> localhost

## 2. Environment Variables (Backend)
Infrastructure-focused variables only:
- `PORT`
- `NODE_ENV`
- `DB_URL`
- `REDIS_URL`
- `TENANT_CACHE_TTL_SECONDS`
- `TRUST_PROXY`
- `ALLOWED_HOSTS`
- `LOG_LEVEL`

Guideline:
- do not use environment variables for tenant business behavior branching.
- tenant behavior comes from tenant config data resolved by domain.

## 3. Frontend Proxy Setup
Frontend proxy should route API calls to Node backend:
- `/bootstrap`
- `/pages/*`
- `/items`, `/categories`, `/cart`, `/orders`, `/payments`, `/auth`

Proxy keeps browser-side calls same-origin in local development.

## 4. Production Deployment Flow
1. Deploy stateless Node API instances.
2. Configure ingress/load balancer to preserve host headers.
3. Route all tenant domains to same backend/frontend runtime.
4. Resolve tenant by domain per request.
5. Serve tenant-specific bootstrap + tenant-scoped business responses.

## 5. Multi-Tenant Domain Mapping Strategy
Maintain authoritative mapping table:
- host -> tenantId
- tenant status
- locale/currency defaults

Operational controls:
- admin tooling for host assignment
- cache invalidation on mapping updates
- audit logs for domain changes

## 6. Scaling Considerations (10–100+ Tenants)
- horizontal scale backend instances
- distributed cache for tenant + config hot paths
- query/index optimization with tenant-partitioning strategy
- per-tenant rate limiting and quotas
- observability dimensions: tenantId, host, endpoint, latency, error-rate

## 7. Reliability Checklist
- health/readiness probes
- circuit breakers for downstream services
- timeout + retry policy by endpoint class
- graceful degradation for config fetch failures
- rollback strategy for bad config releases
