Skip to content

Repository files navigation

PingVista

PingVista is an open-source API monitoring dashboard for developers. It helps you check endpoints, track latency, validate responses, review incidents, export reports, and optionally run checks through a small Python backend.

PingVista dashboard preview

Current Status

PingVista is ready for local use, private demos, portfolio review, and small self-hosted deployments. It can run as a browser-only tool for free, or with the Python backend for server-side checks, webhook alerts, health reporting, per-user local workspaces behind optional Supabase Auth, and basic scheduled checks while the backend is running.

Features

  • Demo mode with sample endpoints, latency history, and an example resolved incident
  • Manual checks for one endpoint or all endpoints
  • Browser-based automatic monitoring
  • Optional Python backend checks
  • Optional backend scheduler while the Python service is running
  • Optional Supabase Auth foundation with separate local workspaces per authenticated user
  • Endpoint groups for Production, Staging, and Development
  • HTTP methods: GET, POST, PUT, PATCH, and DELETE
  • Custom headers and JSON request bodies
  • Expected status and response body validation
  • Latency charts built with SVG
  • Uptime, status, latency, and incident summaries
  • Incident open/recovery tracking
  • Webhook alerts for incident and recovery events
  • Search and filters by status or group
  • CSV report export
  • JSON backup/import
  • Dark mode
  • Backend health endpoint at /api/health
  • Security validation for public URL checks, DNS-resolved private IP blocking, redirect blocking, and remote response size limits
  • Rate limits, endpoint limits, and request body limits
  • GitHub Actions CI for syntax and security tests

Quick Start

Browser-only mode

Open index.html in a modern browser.

This mode is fully free. It stores data in localStorage and runs checks from the browser, so some APIs may fail because of CORS.

Backend mode

pip install -r requirements.txt
python3 app.py

You can also use the npm wrapper:

npm start

Then open:

http://127.0.0.1:4175

Backend mode stores local data in:

data/pingvista-db.json

Supabase Auth (optional)

Auth is in foundation stage. It provides separate local JSON workspaces for authenticated users under data/users/. Full Supabase Postgres persistence is planned and the starter schema is available in supabase/schema.sql.

  1. Create a Supabase project.
  2. Run supabase/schema.sql in the Supabase SQL editor.
  3. Copy .env.example to .env.
  4. Fill these values:
PORT=4175
HOST=0.0.0.0
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SCHEDULER_INTERVAL_MS=300000

When these variables are present, PingVista can proxy Supabase sign-up and sign-in from the Settings tab. The Python backend keeps local JSON as the default persistence layer until the Postgres integration is completed.

Useful Commands

python3 app.py
npm start
npm run check
npm run test:security
npm run deploy:check

Health Check

The backend exposes:

GET /api/health

It returns service status, storage mode, scheduler status, Supabase availability, and active safety limits.

The health response also reports whether data is running as a single local workspace or per-user local JSON mode.

Free Deployment

PingVista can be deployed for free as a public demo:

  • Frontend: GitHub Pages, Vercel Hobby, Netlify Free, or Render Static Site
  • Backend: optional Render/Railway free or trial service
  • Database/Auth: Supabase Free

Read the full guide:

docs/FREE_DEPLOYMENT.md
docs/DAY3_PUBLIC_DEPLOYMENT.md

Self-Hosting

For real monitoring, self-host the backend so scheduled checks continue while your browser is closed.

Read:

docs/SELF_HOSTING.md

Project Structure

PingVista/
├── .github/workflows/ci.yml
├── assets/
│   ├── pingvista-og.svg
│   └── pingvista-screenshot.svg
├── data/
├── docs/
│   ├── FREE_DEPLOYMENT.md
│   ├── DAY3_PUBLIC_DEPLOYMENT.md
│   └── SELF_HOSTING.md
├── supabase/
│   └── schema.sql
├── tests/
│   └── python-backend.test.py
├── .env.example
├── CONTRIBUTING.md
├── LICENSE
├── Procfile
├── README.md
├── ROADMAP.md
├── SECURITY.md
├── app.py
├── index.html
├── package.json
├── render.yaml
├── requirements.txt
├── runtime.txt
├── scripts/
│   ├── start.sh
│   └── verify_deployment.py
├── script.js
└── styles.css

Limitations

  • Browser-only checks are affected by CORS.
  • Free hosting may sleep, pause, or limit background checks.
  • Scheduler and background checks only run while the Python backend process is running. There is no persistent worker or queue yet.
  • Data persistence is primarily local JSON files, with separate files per authenticated user when Supabase Auth is configured.
  • Local JSON data is best for private use, demos, and self-hosted experiments. It is not suitable for high-scale or multi-region production without completing the Postgres integration.
  • PingVista is not a replacement for enterprise observability platforms yet.

Final Private/Demo Checklist

  • Run npm run check before every commit.
  • Run npm run test:security after backend changes.
  • Confirm private URLs, metadata IPs, credentials, and non-HTTP URLs are blocked.
  • Keep .env out of git and use .env.example for documentation only.

License

MIT License. See LICENSE.

About

Self-hostable API monitoring dashboard with a Python backend, endpoint checks, latency tracking, incident history, webhook alerts, SSRF protection, rate limiting, and export tools.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages