Deploy to Azure is the last step for the family beta.
Canonical checklist: next-steps.md — local testing, integrations, deploy, and beta.
Application features for the locked MVP are implemented in the repo. Remaining work is validation, third-party accounts, configuration, and hosting — not a large new coding phase.
| Phase | Status |
|---|---|
| Portal & onboarding | Done |
| Marketing & $7.99 billing | Done |
| Pairing + desktop MSI + Configurator wizard | Done |
| Azure foundation (Bicep, CI) | Code complete — not deployed |
| Beta hardening (health, config validator) | Done |
| Item | Status |
|---|---|
| Portal Pair PC one-time codes | Done |
POST /api/setup/redeem + rate limit |
Done |
scripts/configure-broker-from-pairing-code.ps1 |
Done |
Broker reads %ProgramData%\ScamAlert\broker.appsettings.json |
Done |
| MSI (Broker service + Tray) | Done — scripts/build-desktop-installer.ps1 |
Installer pairing UI (ScamAlert.Configurator) |
Done |
Bake ApiBaseUrl at MSI build (-ApiBaseUrl) |
Done |
| Code-signed MSI | Optional before wider distribution |
| Item | Status |
|---|---|
/api/health includes database check |
Done |
| Production startup config validator (logs errors) | Done |
appsettings.Production.json baseline |
Done |
| Operational runbook | next-steps.md + this doc |
Set via App Service settings or Key Vault references:
ConnectionStrings__ScamAlertDb— Azure SQLAuthentication__Jwt__SigningKey— random, ≥ 32 bytes (not a placeholder)Authentication__BootstrapAdmin__Enabled—falseWeb__PublicBaseUrl—https://…public site URLWeb__InstallerDownloadUrl— real installer blob URL when MSI existsWeb__SupportEmail,Web__LegalEntityName— your legal entityStripe__SecretKey,Stripe__WebhookSecret,Billing__Tiers__0__StripePriceId— live $7.99/month priceEmail__SendGridApiKey,Email__FromAddressTwilio__*— SMS for alertsAPPLICATIONINSIGHTS_CONNECTION_STRING— optional until deploy
Local testing without Stripe: keep Stripe__SkipPaymentForDevelopment=true in Development only.
See next-steps.md for the full walkthrough. Quick commands:
dotnet test ScamAlert.sln -c Release
dotnet run --project src/ScamAlert.Api/ScamAlert.Api.csproj
curl http://localhost:5000/api/healthinfra/scripts/Deploy-Infrastructure.ps1- GitHub OIDC +
deploy-staging.ymlor manual publish curl https://<app>/api/health— expect"database":"ok"- Upload MSI to
installersblob; setWeb__InstallerDownloadUrl - Stripe webhook →
https://<app>/api/webhooks/stripe - Twilio webhooks → public base URL
Privacy, Terms, and Cookies pages are MVP templates — attorney review before public launch.