Frontend
Static site on Azure Static Web Apps with global HTTPS delivery, per-pull-request preview environments, and no server to keep warm.
A portfolio that is also the workload. The site is served from Azure Static Web Apps, the API runs as a container on Azure Container Apps, project data lives in Azure SQL, and every resource is defined in Terraform with private networking and managed identity.
Loaded live from the API. Filter by technology or search across titles and descriptions.
Each layer was built local-first, tested with Docker, then deployed through CI/CD.
Static site on Azure Static Web Apps with global HTTPS delivery, per-pull-request preview environments, and no server to keep warm.
Express API in a multi-stage Docker image on Azure Container Apps. Health and readiness probes, structured JSON logs, request IDs, and graceful shutdown.
Azure SQL holds project metadata behind a private endpoint. Connection retry with exponential backoff absorbs serverless resume delays.
Terraform defines every resource with remote state. Managed identity replaces stored passwords, and Key Vault holds the remaining secrets.
Application Insights traces requests and SQL dependencies; Container Apps logs stream to Log Analytics with alerts on failures and latency.
Pull requests run build validation, then a merge builds the image, pushes to the registry, and rolls out a new revision with rollback available.