????
Aspire is used to bootstrap the project. These can be installed here.
.NET is used for the API. It can be installed here.
Along with Aspire, you also need NodeJS and PNPM. These can be installed using mise.
After installing the above, you can simply run:
export Parameters__github_client_id=""
export Parameters__github_client_secret=""
aspire run -dAnd visit the dashboard link with everything setup!
The HackOMania API is deployed to Google Cloud Run with zero-downtime updates using health probes.
-
Automatic Trigger: Deployments are automatically triggered when changes are pushed to the
mainbranch that affect:HackOMania.Api/**.github/workflows/deploy-api.yml
-
Cloud Run Health Probes:
- Startup Probe:
/healthendpoint validates container readiness before accepting traffic (30s timeout) - Liveness Probe:
/aliveendpoint continuously monitors container health (10s intervals) - Cloud Run automatically handles traffic migration only after health checks pass
- Failed deployments are automatically rejected without affecting production traffic
- Startup Probe:
-
Health Check Endpoints:
/health- Full readiness check (all registered health checks must pass)/alive- Liveness check (only "live" tagged checks)
-
Infrastructure:
- Infrastructure is managed using Pulumi (C#-based IaC)
- Cloud Run service configuration is in
HackOMania.Infra/Stacks/DefaultStack.cs - Run
pulumi upin theHackOMania.Infradirectory to update infrastructure
To manually trigger a deployment, use the GitHub Actions workflow dispatch:
- Go to Actions → Deploy (API) → Run workflow
For simplicity, a justfile is provided with common scripts.
just dev starts the processes.
just codegen generates new Kiota API clients based on the OpenAPI schema.