Skip to content

Sahil-2005/PingGuard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ PingGuard: Enterprise Uptime Monitoring SaaS

Live Demo

PingGuard is a modern, full-stack, enterprise-grade uptime monitoring and alerting application. It continuously tracks the availability and latency of your web services, APIs, and websites, offering deep analytics and instant incident alerts.

Built with a highly scalable Spring Boot backend, a time-series optimized database (TimescaleDB), and a visually stunning React frontend utilizing strict Neubrutalism design principles.


✨ Key Features

  • Reliable Uptime Monitoring: Schedule and execute precise, high-frequency health checks using Quartz Scheduler.
  • Advanced Time-Series Analytics: Fast and efficient storage of ping latency and uptime data leveraging TimescaleDB (Hypertables & Continuous Aggregates).
  • Incident Alerting: Event-driven, asynchronous email alerting system (via Mailtrap) that notifies you the moment a monitor goes DOWN, and when it recovers.
  • Dynamic Dashboard: A sleek, interactive, and responsive UI built with React 19, Vite, and Tailwind CSS v4 featuring a distinctive Neubrutalism design.
  • Secure Authentication: Robust user authentication backed by Spring Security and stateless JWT tokens.
  • Database Migrations: Automated, version-controlled schema migrations powered by Flyway.
  • Production Ready: Fully configured for production deployment using platforms like Render (Backend/Frontend) and Aiven (Managed TimescaleDB).

🛠️ Tech Stack

Frontend (Client)

Backend (Server)

  • Java 19 & Spring Boot 3.5
  • Spring Data JPA & Spring Security
  • Flyway for reliable database migrations
  • Quartz Scheduler (JDBC JobStore) for clustered, persistent background scheduling
  • JWT (jjwt) for secure stateless authentication
  • Spring Boot Mail for asynchronous event-driven email notifications

Database & Infrastructure

  • TimescaleDB (PostgreSQL 16): Optimized specifically for time-series data storage using Hypertables.
  • Docker & Docker Compose: For rapid, localized infrastructure setup.

📂 Directory Structure

PingGuard/
├── client/                     # React Frontend
│   ├── public/                 # Static assets
│   ├── src/                    # Frontend source code
│   │   ├── api/                # Axios API client setup
│   │   ├── components/         # Reusable UI components (Analytics, Auth, Dashboard)
│   │   ├── hooks/              # Custom React Query & logic hooks
│   │   ├── pages/              # Page components (Dashboard, MonitorDetails, Auth)
│   │   └── store/              # Zustand global state stores
│   ├── package.json            # Client dependencies
│   ├── vite.config.js          # Vite configuration
│   └── eslint.config.js        # Linter configuration
├── server/                     # Spring Boot Backend
│   ├── src/main/
│   │   ├── java/pingguard/
│   │   │   ├── config/         # App, Security, & CORS configurations
│   │   │   ├── controller/     # REST API endpoints
│   │   │   ├── dto/            # Data Transfer Objects (Requests/Responses)
│   │   │   ├── entity/         # JPA Entities
│   │   │   ├── event/          # Custom Application Events (e.g., Status Changed)
│   │   │   ├── job/            # Quartz Scheduling Jobs
│   │   │   ├── mapper/         # Object mapping
│   │   │   ├── repository/     # Database repositories & Native SQL Projections
│   │   │   ├── security/       # JWT Authentication logic
│   │   │   └── service/        # Business logic layer (Ping, Analytics, Alerts)
│   │   └── resources/
│   │       ├── db/migration/   # Flyway SQL migration scripts (V1 to V5)
│   │       └── application.yml # Core configuration (DB, Mail, Quartz, JWT)
│   ├── pom.xml                 # Maven dependencies
│   ├── Dockerfile              # Multi-stage Docker build for production
│   └── mvnw                    # Maven wrapper
├── docker-compose.yml          # TimescaleDB local infrastructure setup
└── README.md                   # Project documentation

🚀 Getting Started

Prerequisites

Before you begin, ensure you have the following installed on your machine:

  • Node.js (v18+)
  • Java (v19+)
  • Maven
  • Docker & Docker Compose

1. Start the Database

PingGuard requires a PostgreSQL/TimescaleDB instance. Start it up effortlessly using Docker Compose from the project root:

docker-compose up -d

2. Start the Backend Server

Navigate to the server directory and run the Spring Boot application using the Maven wrapper:

cd server
./mvnw spring-boot:run

(Note: Flyway will automatically execute all database migrations, including creating the TimescaleDB hypertable and Quartz scheduler tables, on startup.)

3. Start the Frontend Client

Navigate to the client directory, install all required dependencies, and boot up the development server:

cd client
npm install
npm run dev

👨‍💻 Author

Sahil Gawade

You can reach out or check out my work through the following platforms:

GitHub LinkedIn Gmail LeetCode Portfolio

If you like this project, feel free to star it! ⭐

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages