A real-time website monitoring application built with Next.js and Convex. It tracks the latency and uptime of your services, visualizing performance with interactive graphs and sending alerts via Discord when services go down.
Live Demo: https://statuspulse.vercel.app
- Real-time Monitoring – Automated cron jobs check your endpoints every minute.
- Visual Analytics – Interactive latency history graphs using Recharts.
- Instant Alerts – Integration with Discord Webhooks to notify you immediately when a service is DOWN.
- Status History – Detailed logs of response times and status codes (200, 404, 500, etc.).
- Modern UI – Built with Tailwind CSS and Shadcn UI for a clean, dark-mode aesthetic.
- Framework - Next.js
- Authentication - Clerk
- Backend & Database - Convex
- Styling - Tailwind CSS, ShadcnUI
- Language - TypeScript
- The Monitor - You add a target URL (e.g., https://api.myapp.com) to the dashboard.
- The Cron Job - A Convex Cron Job runs on a schedule (e.g., every 5 seconds), fetching the URL to check its status and measure latency.
- The Alert - If the status is not 200 OK, the backend triggers a fetch request to your configured Discord Webhook URL to send an alert.
- The UI - The frontend subscribes to the Convex database, updating the graphs in real-time without refreshing the page, in every 10 minutes concurrently.
git clone https://github.com/Varshad-Potle/status-pulse
cd status-pulsenpm installnpx convex devCreate a .env file in the root directory and add your credentials:
CONVEX_DEPLOYMENT=your_Key
NEXT_PUBLIC_CONVEX_URL=your_key
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_key
CLERK_SECRET_KEY=your_keynpm run devApp will be running at:
http://localhost:3000
To receive alert notifications when your monitors go down, you need a Discord Webhook URL.
- Open Discord (Web) and click on the text channel where you want to receive alerts.
- Click on channel name to open dropdown and select Server Settings .
- Go to Integrations in the left sidebar.
- Click Webhooks -> New Webhook.
- Name your bot (e.g., "Uptime Bot") and copy the Webhook URL.
- Paste this URL into the "Discord Webhook URL" field when creating a new monitor in the dashboard.
├── convex/ # Backend & Database Logic
│ ├── auth.config.ts # Clerk/Convex auth configuration
│ ├── crons.ts # Scheduled cron jobs (uptime checks)
│ ├── monitors.ts # API mutations and queries
│ └── schema.ts # Database schema definition
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── dashboard/ # Dashboard pages
│ │ ├── monitor/ # Individual monitor details
│ │ ├── convexClientProvider.tsx # Convex React Provider wrapper
│ │ ├── layout.tsx # Root application layout
│ │ └── page.tsx # Landing page
│ ├── components/ # UI Components
│ │ ├── createMonitor.tsx # Modal/Form to add monitors
│ │ ├── deleteMonitor.tsx # Delete button logic
│ │ └── typeWriter.tsx # Hero section animation
│ └── middleware.ts # Authentication Middleware
└── .env.local # Environment variables