Summary
The monitor checks configured URLs on a schedule, stores results, and computes per-app uptime percentage, average response time, and failure counts from recent history. A live dashboard was observed serving Kairos, MoneyCheck, and CourtLedger health data.
My role and contribution
I'm the single git author on the repository. The project was built with substantial help from ChatGPT (planning) and Cursor (implementation and docs). I configured the monitored apps, deployed the Function App, and checked the dashboard and endpoints by hand. I'm continuing to study the Python application flows.
Status
Public demo. Function App func-uptime-monitor-dan in resource group rg-uptime-monitor (owner-confirmed). Traffic is personal side-project monitoring only — no external product users claimed.
Technology
Python Azure Functions, Azure Table Storage, GitHub Actions, and pytest unit tests in the repository. Infrastructure was set up manually in Azure; Terraform is planned but not part of the published repository.
Problem
Personal side-project deployments can go down unnoticed. This tool gives a small, scheduled history of HTTP health for apps I care about.
User workflow
Timer-triggered checks write history; anyone with the public dashboard URL can read HTML/JSON summaries. A secured manual-check endpoint (POST /api/run-checks) exists in the repository but has not yet been confirmed on the live deployment.
What I personally built
- Directed AI-assisted implementation and deployment.
- Configured monitoring for personal Vercel apps.
- Manual smoke testing via the live dashboard and related endpoints.
Architecture or data flow
Hourly timer → health checks → Azure Table Storage → read endpoints including /api/dashboard, history, and health-report routes. Optional Discord webhook alerting exists in code; live webhook configuration is unknown.
Screenshots


Engineering decisions
Separate scheduled collection from read endpoints; store each check as a durable record so summaries can be recomputed. Public dashboard intentionally exposes app names, URLs, and timing for portfolio transparency — that is a disclosure choice, not a privacy control.
AI-assisted development
I used ChatGPT for planning and Cursor for implementation and documentation. I set up the monitored apps, deployed everything, and verified the dashboard and history endpoints by hand. I'm still studying the main application flows.
Quality and verification
19 pytest unit tests in the repository; CI is configured to run tests before deploy. Owner testing method: open live dashboard/endpoints and confirm responses. Application Insights is believed enabled but not publicly verifiable from the dashboard URL alone.
Edge cases and failure handling
HTTP/timeout handling exists in check code. Live manual-trigger protection for run-checks was not verified (404). Discord alerts unconfirmed.
Known limitations
- Monitoring stats are publicly readable by design (demonstration purposes).
- Personal/educational operator tool — not a multi-tenant product.
- No Terraform in the published repo.
- The manual-check endpoint has not yet been confirmed on the live deployment.
Next improvements
Confirm run_checks is registered on the live Function App, verify Application Insights and Discord configuration, and keep deepening my working knowledge of the Python app.
Demo, repository, screenshots, and tests
- Dashboard: live Azure dashboard
- Repository: github.com/danekweaga/azure-serverless-uptime-monitor
- Screenshots: dashboard and history views above
- Tests: 19 unit tests in repo; CI configured; owner manual live smoke tests
Last verified date
July 2026 — live dashboard observed serving three monitored apps.
