Hosted monitoring and alerts for BullMQ queues

Dev toolWeb1 weekNext.jsRedisStripe

The idea

BullMQ is the default job queue for the Node and Next.js world, and its failure mode is silence: a worker crashes or a queue stalls, and jobs pile up or vanish for days until a customer asks where their export went. The ecosystem’s answer is self-hosted dashboards like Bull Board, which show you the wreckage only if you happen to be looking, and none of which alert you.

Sidekiq Pro proved a decade ago that Ruby developers pay real money for queue reliability tooling; BullMQ has the same audience with nothing to buy. The wedge is being hosted and alert-first: the product’s job is the Slack message at 2am that says nothing has completed in 30 minutes, with retry controls one click away.

Who pays

The buyer is an indie SaaS founder or small Node team running BullMQ in production, paying 9 to 39 dollars a month on a card. These are exactly the people who will not stand up Grafana and Prometheus for a side concern. Distribution: answer BullMQ monitoring questions on Stack Overflow and GitHub discussions, sponsor the BullMQ docs, and lean on the open-source relay container as the discoverable artefact.

MVP scope

  • Connect via Redis URL or an open-source outbound relay for firewalled setups
  • Live queue depths, throughput sparklines and stalled-worker detection
  • Alert rules for failure spikes, depth thresholds and completion silence, to Slack and email
  • Failed-job browser with payloads, stack traces, and one-click or bulk retry
  • Stripe billing with a free single-queue tier
  • Skip for v1: metrics history beyond 7 days, Sidekiq or Celery support, anomaly detection, on-call schedules
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build QueuePulse, a hosted monitoring and alerting service for BullMQ. Stack: Next.js (App Router) with a separate Node.js poller worker, Redis (ioredis) for reading customer queues, Stripe for billing, Postgres for accounts and alert state.

Core flow: user signs up (magic-link auth, no passwords), then connects either by pasting a Redis URL (TLS required) or, for firewalled Redis, by running a lightweight open-source relay container that connects outbound to QueuePulse over WebSocket. The poller discovers queues by scanning for bull: key prefixes, then samples every 15 seconds: waiting, active, delayed, failed and completed counts, plus stalled-worker detection via missing lock heartbeats.

Alert rules per queue: failed jobs exceed N in M minutes, queue depth above threshold for M minutes, no jobs completed in M minutes (the silent-death case), worker count drops to zero. Alerts go to Slack webhook and email, with a resolved notification when the condition clears, and 10-minute cooldowns so a flapping queue does not spam.

Dashboard pages: queue overview with live depth sparklines, queue detail with a paginated failed-job list showing payload and stack trace, one-click retry and bulk retry of dead jobs, alert rule editor, connection settings.

Implementation detail: never KEYS in production Redis, use SCAN with cursors; read job data with pipelined HGETALL to keep load negligible.

Pricing: free for one queue, 19 dollars a month for 10 queues, 39 for unlimited.

// More Dev tool ideas