Linux App Service + App Service Plan
Production context: Hosts the standalone Next.js server itself, on a B1 plan, with application logging deliberately set to its most permissive level ("Verbose") so console.error/console.log output is actually captured to disk.
The technical thesis: Started on B1 as a proportionate, low-cost baseline, with capacity reviewed as usage grows - not a fixed ceiling. Logging was flipped on after a real 500 on a live MFA route left zero server-side visibility into what had actually failed.
Dig deeper: ADR-0001 · engineering log
Azure Database for PostgreSQL - Flexible Server (Burstable B1ms)
Production context: The single relational store behind identity, MFA, and rate limiting, running PostgreSQL 16 with the citext extension explicitly allowlisted for case-insensitive email lookups.
The technical thesis: Chosen over Azure SQL Database and Cosmos DB for native JSONB support and standard wire-protocol portability. Burstable B1ms bills at a fixed hourly rate regardless of query volume - which is exactly why a separate Azure Budget circuit breaker exists as a safety net against human/automation error, not cost-from-load.
Dig deeper: ADR-0010 · engineering log
Production context: Holds every runtime secret this project needs, read by the application and CI/CD pipelines at runtime - never written into a literal anywhere in code.
The technical thesis: Access-policy model (Get/List/Set/Delete, deliberately never Purge), soft-delete without purge protection - a resource removal always stays recoverable, rather than Terraform attempting an immediate hard purge the policy would reject.
Dig deeper: ADR-0004 · engineering log