Architecture
Pongo consists of three main components that work together:Components
- Next.js App: Web dashboard for viewing monitors, managing alerts, and accessing status pages
- Database: Shared data store (SQLite or PostgreSQL) for all configuration and check results
- Scheduler: Standalone service that executes monitors on schedule, evaluates alerts, and dispatches webhooks
Deployment Scenarios
| Scenario | Dashboard | Scheduler | Best for |
|---|---|---|---|
| Vercel | Vercel | Vercel Cron | Serverless, auto-scaling |
| Fly.io | Fly.io | Fly.io | Persistent VMs, multi-region |
| Hybrid | Vercel | VPS/Docker | Global CDN + flexible scheduling |
| Self-hosted | Docker | Docker | Full control |
Choosing a Deployment Option
Vercel
Best for:- Teams already using Vercel
- Serverless infrastructure preference
- Automatic scaling requirements
- Fast global CDN delivery
- Vercel Cron runs every 30 seconds minimum
- Requires PostgreSQL (not SQLite)
- Cold starts may affect monitor timing
Fly.io
Best for:- Always-on persistent VMs
- Multi-region deployments
- Fine-grained control over scheduling
- SQLite or PostgreSQL support
- Requires Fly.io account
- Manual scaling configuration
- Pay for always-running machines
Docker
Best for:- Containerized environments
- Local development and testing
- Docker Compose orchestration
- Consistent deployment across platforms
- Requires Docker knowledge
- Manual container orchestration
- Volume management for persistence
Self-Hosted
Best for:- Complete infrastructure control
- On-premises requirements
- Custom VPS configurations
- Integration with existing infrastructure
- Manual server setup and maintenance
- Requires reverse proxy configuration
- Process management setup needed
Multi-Region Deployments
Deploy schedulers in different regions pointing at the same database:regionThreshold on alerts to control when they fire across regions:
Database Options
Pongo auto-detects the database fromDATABASE_URL:
| Backend | DATABASE_URL | Notes |
|---|---|---|
| SQLite | file:./pongo/pongo.db (default) | WAL mode, zero config |
| PostgreSQL | postgres://user:pass@host:5432/pongo | Production recommended |