A full-stack uptime monitoring service that automatically pings your services to keep them alive. Built with modern web technologies for maximum reliability.
Features β’ Tech Stack β’ Installation β’ Deployment β’ API
- π Unlimited Services - Add as many services as you need
- β° Custom Intervals - Configure ping intervals from 1-30 minutes
- π Real-time Monitoring - Live status updates every 10 seconds
- β‘ Response Time Tracking - Monitor service performance
- π Uptime Percentage - Track service reliability
- π Auto-Ping System - Automatic pinging every minute
- βΈοΈ Pause/Resume - Control services without deletion
- πΎ MongoDB Integration - Persistent data storage
- π¨ Beautiful UI - Modern, responsive design with dark mode
- π± Mobile Friendly - Works seamlessly on all devices
uptime-monitor/
βββ π backend/ # Node.js/Express API
β βββ src/
β β βββ models/ # MongoDB models
β β βββ routes/ # API routes
β β βββ jobs/ # Cron jobs for pinging
β β βββ server.js # Main server file
β βββ package.json
βββ π frontend/ # React application
β βββ src/
β β βββ components/
β β βββ App.jsx
β βββ package.json
βββ π README.md
- β Node.js 18+ installed
- β MongoDB Atlas account (or local MongoDB)
- β Git
- Clone the repository
git clone <your-repo-url>
cd uptime-monitor- Backend Setup
cd backend
npm installCreate a .env file in the backend directory:
MONGODB_URI=your_mongodb_connection_string_here
PORT=5000
NODE_ENV=production- Start the Application
From the root directory:
npm run startThis will:
- β Start the backend server on port 5000
- β Serve the pre-built frontend files
- β
Your app will be available at
http://localhost:5000
For development with hot-reload:
npm run devThis application is optimized for Replit deployment as a single web service.
- π€ Push your code to GitHub
- π Go to Render Dashboard
- β Click "New +" β "Blueprint"
- π Connect your GitHub repository
- π― Render will auto-detect the
render.yamlfile - π Add environment variables:
MONGODB_URI: Your MongoDB Atlas connection string
- β Click "Apply" to deploy
- π€ Push your code to GitHub
- π Go to Render Dashboard
- β Click "New +" β "Web Service"
- βοΈ Configure:
- Name: zero-ping-uptime-monitor
- Environment: Node
- Build Command:
npm install && cd frontend && npm install && npm run build && cd ../backend && npm install
- Start Command:
cd backend && node src/server.js
- Environment Variables:
MONGODB_URI: Your MongoDB Atlas connection stringNODE_ENV: productionPORT: 10000
- π Click "Create Web Service"
- β³ Wait for deployment to complete
- π Your app will be live!
- The backend Express server serves both:
- π API endpoints at
/api/* - π¨ Static frontend files from
/(built React app)
- π API endpoints at
- β All requests handled by a single service on one domain
- π« No CORS issues or separate domain management needed
Backend (.env):
MONGODB_URI=your_mongodb_connection_string
PORT=5000
NODE_ENV=productionSet these in your Render dashboard under Environment tab:
MONGODB_URI: Your MongoDB Atlas connection stringNODE_ENV: productionPORT: 10000 (or your preferred port)
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/services |
Get all services |
GET |
/api/services/:id |
Get single service |
POST |
/api/services |
Create new service |
PUT |
/api/services/:id |
Update service |
DELETE |
/api/services/:id |
Delete service |
GET |
/api/services/:id/stats |
Get service statistics |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/health |
API health status |
POST /api/services
{
"name": "My Service",
"url": "https://example.com",
"interval": 5
}- π Add Services - Enter service name, URL, and ping interval
- β° Automatic Pinging - Cron job runs every minute checking which services need pinging
- π Status Updates - Each ping updates status (online/offline), response time, and uptime
- π Real-time Dashboard - Frontend auto-refreshes every 10 seconds
- πΎ Persistent Storage - All data stored in MongoDB for persistence
- β±οΈ Use intervals of 5-15 minutes for most services to avoid rate limiting
- βΈοΈ Services can be paused/resumed without deleting them
- π System tracks last 100 pings for each service
- π Monitor response times to identify slow services
- β Check MongoDB connection string is correct
- β Ensure MongoDB Atlas allows connections from your IP
- β
Verify all dependencies are installed:
npm install
- β
Check
VITE_API_URLin frontend.env - β Ensure backend is running
- β Check CORS settings in backend
- β Check backend logs for errors
- β Verify the service URL is accessible
- β Ensure cron job is running (check console logs)
Feel free to submit issues and pull requests!
MIT License - see the LICENSE file for details
Built with β€οΈ by Mr Frank (Darrell Mucheri)
For issues and questions, please open a GitHub issue or contact the developer directly.
β Star this repo if you find it helpful!
Made with π using React, Node.js & MongoDB