This project aims to deliver task tracking capabilities and is primarily to learn about new technologies. The goal is to follow best practices whenever possible.
In order to conveniently call the API during development or after deployment, a Postman collection is available to be forked. Make sure to set up the proper authentication parameters before calling any protected endpoints.
The projects required infrastructure is hosted in Microsoft Azure and is managed using Terraform. The resource definitions can be found in the infra directory.
The Terraform state is managed by Terraform Cloud. Pushes to the main
branch result in the global and staging
environments being deployed. The publishing of a GitHub release results in the production environment being deployed.
The API implements the following two HTTP-based health checks:
A liveness probe, which simply sends an HTTP response and does not run any additional health checks, is available on
the /health/live
endpoint.
A readiness probe is available on the /health/ready
endpoint and runs the following health checks:
- The Azure SQL Server instance
Metrics, traces and logs are all handled using OpenTelemetry.
During development the OpenTelemetry Collector is the target for exporting data and subsequently transferring it to Prometheus, Grafana, Loki and Jaeger. The complete stack can be run locally using the provided Docker Compose file.
In production all data is exported using the Azure Monitor Exporter, which makes the observability data available in Azure Application Insights.