How It Works
This dashboard runs as a containerized frontend and backend. The backend polls vendor health sources every 5 minutes, keeps the latest results in memory, and serves them to the dashboard through the authenticated BFF/APIM route.
How data flows
/bff/status. bff-auth handles the session and APIM rewrites the call to backend /api/status.
Vendor monitoring methods
Microsoft service health is read from Graph using the service announcement APIs. The backend fetches health overviews
and active unresolved issues, maps Microsoft statuses to OK / Degraded / Outage / Unknown, and attaches
incident detail for the dashboard's incident modal and admin-center links.
Forte is checked through its public Atlassian Statuspage summary endpoint at
status.forte.net/api/v2/summary.json. Active incidents become the dashboard headline.
Billtrust is configured to check status.billtrust.com/api/v2/summary.json, but authentication requirements are still unresolved.
If the endpoint requires login in production, the app currently cannot read it automatically.
ServiceTrade is checked from its Uptrends-hosted status page. The backend parses confirmed and unconfirmed probe error counts. Confirmed errors report Outage, unconfirmed errors report Degraded, and no probe errors reports OK.
Profitzoom has no known public status API. The backend sends an HTTP GET to
app.profitzoom.net/pyebarker/.
A response below HTTP 400 reports OK; timeout, connection failure, or HTTP 4xx/5xx reports Outage.
Polling and cache behavior
The backend runs five pollers: Microsoft, Forte, Billtrust, ServiceTrade, and Profitzoom. Each poller replaces that vendor's records in the shared in-memory cache. There is no SharePoint list in the current implementation.
Because the cache is in memory, a backend restart clears status until the startup poll completes. The startup poll
runs immediately so /api/status can return fresh data as soon as the service is ready.
Deployment
The repository is configured as a multi-container deployment through CONTAINERS_SPEC. GitHub Actions
calls the shared pbfs/platform-shared-tooling workflow to build and push separate frontend and backend
images, then update Azure Container Apps with the commit-SHA image tags.
| Target | Details |
|---|---|
| Frontend container | frontend/Dockerfile, nginx, serves index.html and about.html |
| Backend container | backend/Dockerfile, Python 3.12, FastAPI, exposes /health and /api/status |
| Production targets | plai-prod-appyapp-yxx8 frontend and plai-prod-testback-zkm1 backend, pending infrastructure confirmation |