Skip to main content

Overview

Public status pages provide unauthenticated access to your uptime monitoring dashboards. Each status page displays comprehensive service health information including response time charts, uptime metrics, and incident history.

Enabling Public Access

Set public: true in your dashboard configuration to expose it as a status page:
// pongo/dashboards/production.ts
import type { DashboardConfig } from "@/lib/config-types";

export default {
  name: "Production",
  slug: "production",
  public: true,
  slaTarget: 99.9,
  monitors: ["api", "database", "cdn"],
} satisfies DashboardConfig;

What’s Included

Public status pages automatically include:

Response Time Charts

  • Real-time response time visualization
  • Historical trends with interactive tooltips
  • Error rate tracking

Uptime Bars

  • Visual uptime history at a glance
  • Color-coded status indicators (green for up, red for down, yellow for degraded)
  • Per-monitor uptime visualization

Latency Percentiles

  • P50 (median): 50th percentile response time
  • P95: 95th percentile response time
  • P99: 99th percentile response time
These metrics help identify performance outliers and ensure consistent service quality.

Status Distribution

  • Breakdown of time spent in each status (up, down, degraded)
  • Percentage-based visualization
  • Correlates with SLA targets

Incident Timeline

  • Chronological list of incidents from pongo/incidents/
  • Severity indicators (critical, warning, info)
  • Start and resolution timestamps
  • Detailed incident descriptions

Announcements

  • Scheduled maintenance notifications
  • System updates and changes
  • Expiring announcements with automatic removal

Status Page Routes

Public status pages are accessible at:
RouteDescription
/shared/[slug]Public status page (no authentication required)
/shared/[slug]/feed.xmlRSS feed for incidents and announcements
/shared/[slug]/feed.atomAtom feed for incidents and announcements
/shared/[slug]/status.jsonJSON API for programmatic status checks
/api/status.jsonGlobal system status JSON (all monitors)

Example Routes

For a dashboard with slug: "production":
  • Status page: https://your-domain.com/shared/production
  • RSS feed: https://your-domain.com/shared/production/feed.xml
  • Atom feed: https://your-domain.com/shared/production/feed.atom
  • Status API: https://your-domain.com/shared/production/status.json
For global system status:
  • Global status: https://your-domain.com/api/status.json

Status JSON API

The /api/status.json endpoint provides a machine-readable overview of your entire system status. This is useful for integrating Pongo status into other services or building custom status displays.

Response Format

{
  "page": {
    "id": "pongo",
    "name": "pongo.sh",
    "url": "https://your-domain.com",
    "time_zone": "Etc/UTC",
    "updated_at": "2025-03-04T12:00:00.000Z"
  },
  "status": {
    "indicator": "none",
    "description": "All Systems Operational"
  }
}

Status Indicators

The indicator field reflects the worst status across all monitors and active incidents:
IndicatorDescriptionCauses
noneAll systems operationalAll monitors up, no incidents
minorMinor service outageDegraded monitors, minor incidents, or firing alerts
majorMajor service outageMonitors down, major incidents
criticalCritical system outageCritical incidents

Example Usage

# Check overall system status
curl https://your-domain.com/api/status.json

# Use in monitoring scripts
STATUS=$(curl -s https://your-domain.com/api/status.json | jq -r '.status.indicator')
if [ "$STATUS" != "none" ]; then
  echo "System degraded: $STATUS"
fi

RSS and Atom Feeds

Each public dashboard includes syndication feeds that subscribers can use to receive updates about incidents and announcements.

Feed Contents

  • New incidents as they occur
  • Incident status updates (investigating, identified, monitoring, resolved)
  • Scheduled maintenance announcements
  • System status changes

Using Feeds

Subscribers can add your feed URL to any RSS reader:
# Example: Fetch RSS feed
curl https://your-domain.com/shared/production/feed.xml

Authentication

Status pages are always accessible without authentication, even when ACCESS_CODE is set for the main dashboard. This ensures your users can check service status without credentials.
Private dashboards (public: false) remain protected behind authentication and are not exposed via /shared/[slug] routes.

Best Practices

Use Clear Slugs

Choose descriptive, memorable slugs like production, api, or services for easy sharing.

Set SLA Targets

Configure slaTarget (e.g., 99.9) to display uptime goals on your status page.

Keep Incidents Updated

Regularly update incident status and resolution times to keep users informed.

Promote Feed URLs

Share RSS/Atom feed URLs with users who want proactive notifications.

Dashboards

Learn about dashboard configuration and organization

Incidents

Create and manage incident reports

Announcements

Add scheduled maintenance and update notices

SLA Tracking

Configure and monitor SLA targets

Build docs developers (and LLMs) love