Engineering teams often suffer from silent API failures and gradual latency degradation. Traditional ping monitors are too simplistic, while enterprise observability platforms are overly complex, deeply coupled with the infrastructure, and expensive. When an endpoint goes down or experiences heavy load, teams need immediate, reliable alerts decoupled from the failing system itself—without the overhead of installing massive server agents or dealing with noisy, uncoordinated incident reports.
DeployWatch is a high-frequency polling and automated incident response platform designed to be both lightweight and highly resilient.
It solves the problem through a decoupled, event-driven architecture:
- Decoupled Task Queues: Uses BullMQ and Redis to isolate the monitoring workloads. A dispatcher worker schedules APIs due for checks without being tightly coupled to cron jobs or tying up request cycles.
- Resilient Polling: Target API timeouts, worker node crashes, or database connection spikes won't crash the monitoring engine. Stalled jobs are automatically re-assigned to active workers.
- Smart Detection: Instead of alerting on single blips, the detection logic evaluates consecutive failures and latency threshold breaches over time to prevent alert fatigue.
- Automated Incident Response: When an outage is confirmed, DeployWatch automatically opens an incident, logs the historical timeline, and asynchronously fires off alerts (Email, Slack, Webhooks) using a dedicated worker to ensure rapid response times.
DeployWatch is organized as a split workspace:
DeployWatch/
frontend/ Next.js SaaS frontend
backend/ Node.js API, Prisma, BullMQ workers
docs/ Architecture notes
README.md
The frontend is a Next.js App Router application built with TypeScript, Tailwind CSS, React Query, and Recharts.
Typical commands:
cd frontend
npm install
npm run devThe backend is a production-oriented Node.js + TypeScript service built with:
- Express
- PostgreSQL + Prisma ORM
- BullMQ + Redis
- Zod validation
Typical commands:
cd backend
npm install
npm run prisma:generate
npm run devStart workers in a second terminal:
cd backend
npm run dev:workerArchitecture notes live in docs/architecture.md.
The repository includes a root docker-compose.yml that runs:
frontendbackendworkerpostgresredis
Start everything:
docker compose up --buildThe app will be available at:
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:4000
The Compose stack also runs a one-shot migration container that applies the Prisma schema with prisma db push before the API and worker start.