Uptime & Health
Liveness of the non-production stack — the environments the build team owns end to end. Each tile maps to a logical probe that /api/health aggregates per environment; uptime is a rolling 30 days window and latency is the health-check p50. PROD is tracked separately and is out of scope here.
8
Probes tracked
99.1%
DEV uptime (30 days)
98.3%
Staging uptime (30 days)
1
Open incidents
Health endpoints
The raw payloads these tiles are derived from. Open one to see the live, un-summarized health response for that environment.
DEV
http://localhost:3000/api/health
Staging
https://staging.uploz.io/api/health
Probe board
One row per probe target across DEV and staging. Each cell shows current state, rolling uptime, and health-check p50. Grouped by tier.
| Probe | DEV | Staging |
|---|---|---|
apps/web Next.js server renders and the App Router responds within budget. health.app.web | Up 99.9% · 42ms | Up 99.7% · 88ms |
apps/dev-admin This cockpit boots and its read-only data layer resolves. health.app.devAdmin | Up 99.8% · 36ms | Degraded 98.1% · 140ms IP-allowlisted; cold starts after idle inflate p50. |
| Probe | DEV | Staging |
|---|---|---|
Supabase Postgres A SELECT 1 against the source-of-truth database succeeds. health.data.postgres | Up 100.0% · 3ms Local Supabase stack. | Up 99.9% · 11ms |
Supabase Storage A signed-URL HEAD against the attachments bucket returns 200. health.data.storage | Up 99.9% · 18ms | Up 99.8% · 53ms |
| Probe | DEV | Staging |
|---|---|---|
apps/worker The escalation loop heartbeats and fn_due_escalations last ran on time. health.async.worker | Up 99.1% · n/a Single in-process loop. | Down 94.0% · n/a Leader-election rollout in progress; loop paused to avoid double-fire. |
Web Push (VAPID) The dispatch path is reachable and VAPID keys are loadable. health.async.webpush | Degraded 95.0% · n/a Delivery logged but not dispatched in DEV. | Unknown — · n/a Not yet stood up in staging. |
| Probe | DEV | Staging |
|---|---|---|
Supabase API / Auth PostgREST + GoTrue answer a probe request behind RLS. health.edge.supabaseApi | Up 99.9% · 9ms | Up 99.6% · 47ms |
Realtime / WS A presence channel opens and a postgres-changes subscription ACKs. health.edge.realtime | Up 99.5% · 14ms | Degraded 97.2% · 210ms Broadcast throttling still being tuned; occasional reconnect storms. |
Recent incidents
Disruptions in the non-prod environments. Open items still need attention; resolved items are kept for trend context.
| Date | Env | Probe | Summary | Duration | State |
|---|---|---|---|---|---|
| 2026-05-18 | Staging | apps/worker | Escalation loop paused during leader-election rollout; due escalations queued. | ~6h (ongoing rollout) | Open |
| 2026-05-12 | Staging | Realtime / WS | Reconnect storm after a deploy spiked presence-channel latency. | 38m | Resolved |
| 2026-05-06 | DEV | Supabase Postgres | Local Supabase stack OOM-restarted during a large migration replay. | 11m | Resolved |
| 2026-04-29 | Staging | apps/dev-admin | Cold-start p50 breached budget after an idle weekend; warmed via a keep-alive probe. | 22m | Resolved |
Probe history and the incident log are illustrative project-tracking state authored in src/data/uptime.ts (permitted per R1), not a feed from a live monitor.