PulseGuard is a robust, real-time uptime monitoring solution designed to track the availability and performance of your services. Built with a modern tech stack, it offers instant alerts, detailed analytics, and a live dashboard to ensure your systems are always up and running.
- Real-Time Monitoring: Instant status updates powered by WebSockets and Redis Streams.
- Multi-Protocol Support: Monitor various services including HTTP/HTTPS, TCP, UDP, DNS, PING, SMTP, and SSL Certificates.
- Instant Alerts: Get notified immediately via Email (Brevo/Nodemailer) when a service goes down or experiences degraded performance.
- Detailed Analytics: Track uptime percentages, response times, and review comprehensive incident history logs.
- Background Workers: Highly scalable job processing and scheduling powered by BullMQ and Redis.
- Interactive Dashboard: Beautiful, responsive UI with real-time data visualization using Recharts.
- React.js: Dynamic, component-based user interface.
- Vite: Lightning-fast build tool and development server.
- Tailwind CSS: Utility-first CSS framework for modern, responsive design.
- Recharts: Composable charting library for beautiful data visualization.
- Socket.io-client: Real-time bi-directional communication.
- Node.js & Express.js: High-performance REST API.
- MongoDB & Mongoose: Flexible document database for storing users, monitors, and logs.
- Redis & ioredis: High-speed caching, Pub/Sub messaging, and Job Queues.
- Socket.io: Real-time event broadcasting to the frontend.
- BullMQ: Robust, Redis-based background job processing.
- Jest & Supertest: Comprehensive unit and integration testing suite.
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
Ensure you have the following installed on your system:
- Node.js (v18.0.0 or higher recommended)
- MongoDB (Local instance or MongoDB Atlas)
- Redis (Local instance or Cloud Redis)
-
Clone the repository:
git clone https://github.com/sanathkmr14/PulseGuard.git cd PulseGuard -
Install dependencies for both backend and frontend:
npm run install:all
Alternatively, you can manually run
npm installin both thebackendandfrontenddirectories.
You will need to set up environment variables for both the backend and frontend to function correctly.
1. Backend (backend/.env)
Create a .env file in the backend directory:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
REDIS_URL=redis://localhost:6379
JWT_SECRET=your_jwt_secret
# Email Service Configuration
SMTP_HOST=your_smtp_host
SMTP_PORT=your_smtp_port
SMTP_USER=your_smtp_user
SMTP_PASS=your_smtp_pass2. Frontend (frontend/.env)
Create a .env file in the frontend directory:
VITE_API_URL=http://localhost:5000/api
VITE_SOCKET_URL=http://localhost:5000You can start both the backend and frontend development servers concurrently using the root script:
npm run dev- Frontend:
http://localhost:5173(Vite default) - Backend API:
http://localhost:5000
Once your application is up and running, you can start monitoring your services immediately:
- Access the Dashboard: Open your browser and navigate to the frontend URL (e.g.,
http://localhost:5173). - Create an Account: Register for a new account or log in.
- Add a Monitor: Click on "Create Monitor", select your desired protocol (HTTP, TCP, PING, DNS, etc.), and enter the target URL or IP.
- Configure Alerts: Set up your email notifications to get pinged instantly if a service goes down or latency spikes.
- View Analytics: Visit the Analytics page to view real-time charts of your uptime and response times.
We welcome and deeply appreciate contributions from the open-source community! Whether you are fixing bugs, improving documentation, or proposing new features, your efforts help make PulseGuard a better tool for everyone.
To ensure a smooth and collaborative workflow, we recommend opening an issue to discuss significant changes or new feature ideas before submitting a pull request. This helps align your work with the project's roadmap and saves everyone valuable time.
Let's connect and collaborate!
This project is licensed under the MIT License - see the LICENSE file for details.