Production-Grade Monitoring

Monitoring Infrastructure.
Built For Real Systems.

Monitor websites, APIs, and services with real-time event streaming powered by Redis Pub/Sub, Socket.IO, PostgreSQL, and background workers.

99.98%Availability
<200msResponse Time
Real-timeEvent Streaming
24 / 7Monitoring
Next.js 15TypeScriptRedis Pub/SubSocket.IOPostgreSQLPrismaBackground Workers
pulse-monitor / prod--:--:--
system statusAll Systems Operational
API HealthHealthy
RedisConnected
WorkerRunning
Socket.IOActive
Uptime99.98%
Events / min1,247
Active Clients34
Checks / sec8.3
live logs--:--
GET /health → 200 OK142ms
Worker #3 dispatched job #4821
Redis PUBLISH monitor:result
EVENT-DRIVEN ARCHITECTURE

Built for Real-Time Monitoring

Every monitor check travels through a resilient event-driven pipeline powered by background workers, PostgreSQL, Redis Pub/Sub, Socket.IO, and intelligent alerting.

event-driven
Monitor01
Next.js · Prisma
Idle
Worker02
Node.js BG Process
Idle
PostgreSQL06
Prisma ORM
Idle
HTTP Check03
fetch · 5s timeout
Idle
Success Criteria04
Rules Engine
Idle
Redis Pub/Sub07
ioredis · PUBLISH
Idle
Alert Service05
Rule Trigger
Idle
Socket.IO09
Bi-directional WS
Idle
Analytics10
Trends · SLA Reports
Idle
Email Service08
AWS SES
Idle
Webhooks11
Email · Webhook
Idle
Dashboard12
Next.js · Recharts
Idle
Simulation Log0 events
0%
Press Run Simulation to watch data flow through the pipeline
Nodes in pipeline
12
Monitor → Dashboard
Avg end-to-end
<200ms
check to UI update
Event transport
Pub / Sub
Redis channels
Realtime layer
Socket.IO
bi-directional WS
Engineering Stack

Every layer chosen
with intent.

No boilerplate padding. Each technology solves a specific problem in Pulse Monitor's production pipeline.

0+
Technologies
0
System Layers
0%
Type Coverage
Frontend What users see and interact with
Framework
Next.js 15
App Router · Server Actions · SSR
App Router with React Server Components
Server Actions replace REST for mutations
Language
TypeScript
End-to-end type safety
Strict mode — zero any allowed
Shared types across client and server
Styling
Tailwind CSS
Utility-first design system
Custom design tokens for brand palette
Dark-first with zero runtime overhead
Components
shadcn/ui
Accessible, composable UI primitives
Radix UI primitives under the hood
Copy-and-own — no black-box dependencies
Charts
Recharts
Response time graphs · Heatmaps
Custom tooltips for latency data
Animated availability heatmap cells
Full stack at a glance
13 technologies
Platform Features

Everything you need to monitor with confidence.

From sub-second alerting to a 6-month availability heatmap — a complete operational picture in one place.

Live Monitors
Watching
api.pulse-monitor.sh91ms
dashboard.pulse-monitor.sh130ms
webhooks.pulse-monitor.sh651ms
auth.pulse-monitor.sh61ms
worker.pulse-monitor.sh
Global Uptime
99.98%
last 30 days · all monitors
SLA threshold99.9% ✓
Response Time
api.pulse-monitor.sh
90ms
avg
87ms
within SLA threshold
Availability Heatmap
24 weeks
UpDegradedDown
99.7%
Notifications
1 active
worker.pulse-monitor.sh is DOWN
No response after 5 retries
Event Stream
Redis Pub/Sub
--:--:--CHKGET api.mpulse-monitorontu.sh/health → 200 OK (84ms)
--:--:--PUBPUBLISH monitor:4821:result → 1 subscriber
--:--:--ERRworker.pulse-monitor.sh timeout — 5000ms exceeded
Monitor Types
HTTP / HTTPS
Status + latency checks
SSL / TLS
Certificate expiry alerts
TCP Port
Port reachability probe
Keyword
Body content assertions
Check Interval
Mission Control

One screen. Every signal.

This is what your team sees during an incident — monitors, alerts, latency, and the event stream, all in one operations view.

Active Monitors
6/8 healthy
api.pulse.sh
iad1
dashboard.pulse.sh
iad1
webhooks.pulse.sh
fra1
auth.pulse.sh
iad1
worker.pulse.sh
sfo1
cdn.pulse.sh
fra1
status.pulse.sh
iad1
billing.pulse.sh
sfo1
Alerts
2 open
CRIT
worker.pulse.sh — connection refused
WARN
webhooks.pulse.sh — p95 latency 643ms
Response Times
live
api.pulse.sh84ms
dashboard.pulse.sh123ms
auth.pulse.sh54ms
webhooks.pulse.sh509ms
Live Events
Socket.IO
--:--:--ws:connect → client #4821
--:--:--PUBLISH monitor:result → 1 subscriber
--:--:--check:complete api.pulse.sh (84ms)
System Logs
background workers
--:--:--INFOworker_pool: 8 workers active, 0 idle
--:--:--INFOdb: connection pool 12/20 in use
Notification Center
worker.pulse.sh is down
5 consecutive failed checks
Analytics

History you can actually read.

Every check, stored and charted — 32 weeks of availability at a glance, and response time down to the minute.

Availability Heatmap
32 weeks
UpDegradedDown
99.9% uptime
Response Time — 24h
api.pulse.sh
90ms
24h avg
90ms
within SLA threshold
Engineering

Built with intention. Engineered for production.

Every architectural decision has a reason. Here's the thinking behind the systems that power Montu Pilot.

Monitoring Engine
Problem

Scheduling thousands of HTTP checks reliably without blocking the web server or losing jobs on restart.

Solution

A dedicated background worker process polls a persistent job queue, executes checks in isolation, and writes results directly to PostgreSQL — fully decoupled from the Next.js server lifecycle.

Node.jsBackground WorkerPrismaPostgreSQL
Background Workers
Problem

Long-running tasks like HTTP checks cannot live inside HTTP request handlers — they time out, block event loops, and lose state on deploy.

Solution

Workers run as a separate process with their own lifecycle. Each check job is idempotent — retried up to 3 times on failure, with exponential backoff to avoid thundering herd.

Node.js ProcessJob QueueRetry LogicBackoff
Redis Pub/Sub
Problem

Pushing a check result to every connected browser client without polling, and without coupling the worker to the WebSocket layer.

Solution

The worker PUBLISHes to a Redis channel after every check. The Socket.IO server SUBSCRIBEs and fans out to all rooms — O(1) publish cost regardless of how many clients are connected.

ioredisPUBLISH / SUBSCRIBEChannel Fan-outDecoupling
Realtime Layer
Problem

Keeping dashboards in sync with check results as they happen, without clients polling the API on an interval.

Solution

Socket.IO subscribes to Redis on server startup and re-emits events to client rooms. Clients receive live updates via a persistent WebSocket connection — zero polling, sub-100ms delivery.

Socket.IO ServerWebSocketRoomsReconnection
Database Layer
Problem

Storing every check result for every monitor without the table growing unbounded or queries slowing down over time.

Solution

Prisma ORM with PostgreSQL. The check_results table is indexed on (monitor_id, checked_at DESC) for fast range queries. Older records are archived via a scheduled cleanup worker.

PostgreSQLPrisma ORMIndexed QueriesArchival Worker
Authentication
Problem

Securing the dashboard and API without building and maintaining a custom auth system from scratch.

Solution

Auth.js handles OAuth 2.0 (Google, GitHub) with server-side sessions persisted in PostgreSQL via the Prisma adapter. Server Actions validate session tokens at the boundary — no exposed REST layer.

Auth.jsOAuth 2.0Prisma AdapterServer Actions
Validation
Problem

Ensuring untrusted data from forms and API calls never reaches the database in an invalid state.

Solution

Zod schemas are co-located with every form and Server Action. Input is parsed and validated at every trust boundary — client, server action, and database write — with descriptive error messages surfaced to the user.

ZodReact Hook FormServer ActionsType Safety
System Design
Problem

Demonstrating a coherent, production-ready architecture that scales beyond a single monolith.

Solution

Pulse Monitor separates concerns across three processes: the Next.js web server, the background worker, and the Socket.IO relay. Each has a single responsibility — independently deployable and replaceable.

Separation of ConcernsEvent-DrivenIndependent ProcessesScalable
Open Source

Built to monitor production systems.
Engineered to demonstrate full-stack excellence.

Pulse Monitor is a fully open-source portfolio project. Explore the source code, read the architecture, and see how every piece fits together.

Next.js 15TypeScriptPostgreSQLRedis Pub/SubSocket.IOPrismaAuth.jsTailwind CSS