Series
CCDiary
6 articles, in reading order.
Building a Free Personal Diary App on Azure — Architecture Overview
How CCDiary is structured across Azure Static Web Apps, Container Apps, and a serverless SQL Database — all running within Azure's free tiers.
CCDiary Bicep Deep Dive — Modules, Parameters, and Free-Tier Wiring
How CCDiary's Azure infrastructure is defined in Bicep: the module structure, parameterisation across environments, and the specific properties that keep every resource on the free tier.
CCDiary Entra ID Integration — SPA Auth Flow, Managed Identity, and Role Assignment
How CCDiary wires Microsoft Entra ID from end to end: the MSAL auth code flow in the Vue SPA, JWT Bearer validation in ASP.NET Core, managed identity for the API-to-SQL connection, and role assignment in Bicep.
CCDiary Container Apps Zero-to-One Scaling — Configuration, Cold Starts, and Health Probes
How CCDiary's ASP.NET Core API scales from zero to one replica on Azure Container Apps: the KEDA HTTP trigger, liveness and readiness probe configuration with Steeltoe, cold-start timing, and what happens to requests while the container is starting.
CCDiary EF Core with Serverless SQL — Migration Strategy and Cold-Start Latency
How CCDiary manages EF Core migrations against an auto-pausing serverless SQL database: running migrations as a separate CI step, wiring connection resilience for cold-start latency, and keeping schema and code in sync across deployments.
CCDiary OpenTelemetry End-to-End — Joining Frontend Faro Traces with Backend OTEL Spans in Grafana
How CCDiary connects Grafana Faro frontend traces with OpenTelemetry backend spans in a single Grafana view: W3C trace context propagation, OTLP export to Log Analytics, and the KQL queries that join them.