Single-page app for reporting Gilly's location.
- Attempts to collect reporter geolocation when the page loads
- Falls back to map selection if location access is unavailable
- Lets the reporter submit contact details/notes
- Stores reports in SQL table
GillyTracker.DogSightingReports - Provides an admin-only sightings page at
/admin/sightings - Uses Microsoft Entra sign-in for admins and only allows users in
PetTrackerAdmins
Set these values for the backend (for local development use user-secrets or environment variables):
Authentication:Microsoft:TenantIdAuthentication:Microsoft:ClientIdAuthentication:Microsoft:ClientSecretAuthorization:PetTrackerAdminsGroupObjectId(the Entra object ID forPetTrackerAdmins)
dotnet test --project /home/runner/work/GillyTracker/GillyTracker/GillyTracker.Core.Tests/GillyTracker.Core.Tests.csproj
cd /home/runner/work/GillyTracker/GillyTracker/GillyTracker.Web
pnpm install --frozen-lockfile
pnpm lint
pnpm buildTerraform is configured to use existing Azure resources:
- Resource Group:
KebooDev - ACR:
keboodevacr.azurecr.io - Container App Environment:
keboodev-env - SQL Server and database are discovered via Terraform data sources in the existing resource group
- Frontend hosting is provisioned as an Azure Static Web App, and backend CORS allows that origin
- The deploy-infrastructure workflow expects repository secrets
GITHUB_ACTIONS_APP_OBJECT_IDandGITHUB_ACTIONS_INFRA_OBJECT_IDfor database user principal IDs
Terraform now provisions an Azure Key Vault in the deployment resource group. Terraform also creates the backend Entra app registration and writes these Key Vault secrets automatically:
Authentication--Microsoft--TenantIdAuthentication--Microsoft--ClientIdAuthentication--Microsoft--ClientSecretAuthorization--PetTrackerAdminsGroupObjectId
Apply infrastructure changes:
terraform -chdir=Infra plan
terraform -chdir=Infra apply -auto-approve