Down detector, performance monitoring, and public status pages. All open source.
LazyPing is a comprehensive monitoring solution that helps you keep track of your endpoints' health, visualize performance metrics, and share system status with your users through beautiful public status pages.
Features
Project Dashboard
Get a bird's-eye view of all your monitored endpoints:
- Detailed Summary: Instant overview of all project endpoints with key metrics at a glance
- Uptime Visualization: Logs organized into 24-hour color-coded buckets for quick status assessment
- Latency Analytics: Average latency charts across all project endpoints
- One-Click Export: Export complete project data including endpoints and logs with a single click
- Easy Management: Add new endpoints or dive deep into individual endpoint dashboards
Endpoint Dashboard
Monitor individual endpoint health with granular detail:
- Detailed Health Metrics: Comprehensive monitoring for each endpoint
- Performance Charts: Latency trends and uptime bars specific to each endpoint
- Custom Intervals: Configurable ping intervals (from seconds to hours)
- On-Demand Verification: Trigger manual pings for instant status checks
Public Status Pages
Keep your users informed about your system's health:
- Transparent Status: Overall and detailed health display for your project
- Secure by Design: All sensitive URLs are automatically hidden
- Professional Appearance: Clean, intuitive interface for end users
- Real-Time Updates: Automatic status reflection as conditions change
Getting Started
Prerequisites
- Bun runtime
- MongoDB database
- Redis instance
- Clerk account for authentication
- GitHub account (for Actions)
1. Local Setup
Clone the repository and install dependencies:
git clone https://github.com/your-repo/lazyping.git
cd lazyping
bun install
2. Environment Configuration
Create a .env file in the root directory:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERKSIGN_IN_URL=/login
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/signup
CLERK_WEBHOOK_SECRET=
# Database Configuration
MONGODB_URI=
REDIS_HOST=
REDIS_PORT=
REDIS_USERNAME=
REDIS_PASSWORD=
# GitHub Actions
HUB_CRON_SECRET=
NEXT_PUBLIC_APP_URL=
# App Configuration
NEXT_PUBLIC_APP_URL=http://localhost:3000
ENVIRONMENT=development
3. Clerk Configuration
- Go to your Clerk Dashboard
- Navigate to your project > Configure > Session
- Under Custom session tokens, add the following to the
__session claims:
{
"metadata": "{{user.public_metadata}}"
}
4. Database Setup
MongoDB
- Create a MongoDB cluster (MongoDB Atlas recommended)
- Get your connection URI and add it to
MONGODB_URI
Redis
- Set up a Redis instance (Upstash, Redis Labs, or self-hosted)
- Configure the Redis connection variables in your
.env
5. Run the Application
# Development mode
bun run dev
# Production build
bun run build
bun run start
Architecture
LazyPing is built with modern technologies:
- Frontend: Next.js 14 with App Router
- Styling: Tailwind CSS for responsive design
- Database: MongoDB for data persistence
- Caching: Redis for real-time operations
- Authentication: Clerk for secure user management
- Monitoring: Custom ping engine with cron jobs
- Deployment: Optimized for Vercel and Docker
How It Works
Monitoring Engine
- Scheduled Pings: Background jobs ping your endpoints at configured intervals
- Response Analysis: Records status codes, response times, and errors
- Data Aggregation: Compiles metrics into meaningful visualizations
- Alert System: Detects downtime and performance degradation
Data Visualization
- 24-Hour Buckets: Color-coded blocks show uptime/downtime at a glance
- Latency Charts: Track performance trends over time
- Status Pages: Public-facing views with sensitive data redacted
Security Features
- URL Obfuscation: All endpoint URLs are hidden on public pages
- Authentication Required: Private dashboards protected by Clerk
- Data Encryption: Sensitive data encrypted at rest
- API Security: Rate limiting and request validation
- Environment Isolation: Separate configs for dev/prod
Export Functionality
Export your monitoring data in various formats:
- JSON: Complete data structure for programmatic use
- CSV: Spreadsheet-friendly format for analysis
- PDF: Beautiful reports for stakeholders
Customization
Monitoring Intervals
Configure ping frequencies per endpoint:
- Real-time monitoring (every 30 seconds)
- Standard monitoring (every 5 minutes)
- Background monitoring (hourly)
Status Page Branding
- Custom domain support
- Logo and color scheme customization
- Message and incident templates
Contributing
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m 'Add some AmazingFeature'
- Push to the branch
git push origin feature/AmazingFeature
- Open a Pull Request