Prerequisites
Before you begin, make sure you have:- Bun installed (v1.0 or later)
- Git installed
- A code editor (VS Code, Cursor, etc.)
Installation
Install dependencies
Install all required dependencies using Bun:
Pongo uses Bun as its runtime. If you don’t have Bun installed, visit bun.sh for installation instructions.
Configure environment variables
Copy the example environment file to create your own configuration:The default configuration uses SQLite, which requires no additional setup. For production deployments, see the Database Configuration guide.
Run database migrations
Create the required database tables:This creates a SQLite database file at
- SQLite (Default)
- PostgreSQL
pongo/pongo.db.The database driver is auto-detected from your
DATABASE_URL. No additional configuration needed.Start the development server
Start the Next.js development server:Open http://localhost:3000 in your browser. You should see the Pongo dashboard.
Start the scheduler
Open a second terminal in the same directory and start the scheduler service:The scheduler runs your monitors on their configured schedules and evaluates alert conditions.
The scheduler runs as a separate process. In production, you can run it on the same server or deploy it separately. See Scheduler Setup for details.
Create Your First Monitor
Now that Pongo is running, let’s create a simple HTTP health check monitor.Create a monitor file
Create a new file in
pongo/monitors/ called my-api.ts:pongo/monitors/my-api.ts
Replace
https://api.example.com/health with your actual API endpoint.View your monitor
The scheduler will automatically pick up your new monitor and start running it every minute. Visit http://localhost:3000/monitors to see it in action.
It may take up to a minute for the first check to run. Refresh the page to see the latest results.
Add Alerts (Optional)
Make your monitor more useful by adding alerts that notify you when things go wrong.Configure a notification channel
Edit Then add your Slack webhook URL to
pongo/channels.ts to add a webhook endpoint:pongo/channels.ts
.env:.env
Create a Status Page (Optional)
Share your monitor status publicly with a beautiful status page.View your status page
Visit http://localhost:3000/shared/status to see your public status page.The page includes:
- Current monitor status
- Response time charts
- Uptime percentage
- Historical data
- RSS/Atom feeds
Next Steps
You now have a working Pongo installation! Here’s what to explore next:Core Concepts
Learn about monitors, alerts, dashboards, and channels in depth
Deployment Guide
Deploy Pongo to production with Vercel, Fly.io, Docker, or self-hosted
Creating Monitors
Explore different monitor types and advanced patterns
Configuring Alerts
Set up sophisticated alert conditions and notifications
Troubleshooting
Scheduler not picking up monitors
Scheduler not picking up monitors
Make sure:
- The scheduler is running (
bun scheduler) - Your monitor is registered in
pongo/monitors/index.ts - There are no TypeScript errors in your monitor file
- You’ve waited at least one interval period
Database connection errors
Database connection errors
If using PostgreSQL:
- Verify your
DATABASE_URLin.envis correct - Make sure PostgreSQL is running
- Check that the database exists
- Verify user permissions
- Check that
pongo/pongo.dbexists - Verify file permissions
Port already in use
Port already in use
If port 3000 or 3001 is already in use:
.env
Getting Help
- Check the Guides for detailed instructions
- Review the API Reference for complete type documentation
- Open an issue on GitHub