Stop finding out
from your users.

BugCatch captures every unhandled exception, groups duplicates by fingerprint, and alerts you before anyone files a ticket. It runs entirely on your servers — not ours.

NestJS · MySQL · Redis · React · TypeScript

main.tsx
import BugCatch from 'bugcatch-sdk';

BugCatch.init({
  dsn: import.meta.env.VITE_BUGCATCH_DSN,
  release: import.meta.env.VITE_APP_VERSION,
  environment: import.meta.env.MODE,
});

// Auto-captures all uncaught errors.
// Manual capture when you need it:
try {
  await processOrder(orderId);
} catch (err) {
  BugCatch.captureException(err, { orderId });
}

An alternative to Sentry, Datadog, and New Relic — without the monthly bill or the data dependency.

BugCatch is an open-source error tracking platform you deploy yourself. A lightweight JavaScript SDK captures exceptions, promise rejections, and custom events across browser and Node.js apps. Every error is fingerprinted, deduplicated, and surfaced in a real-time dashboard with full stack traces, breadcrumb trails, and user impact metrics.

Errors stay on your database. No third-party ingestion pipeline. No usage tiers. No seat limits.

From crash to alert in under a second

SDK captures

Attaches to window.onerror and unhandledrejection. Parses stack traces. Records click, navigation, and console breadcrumbs automatically.

Ingest queues

Your app gets HTTP 200 immediately. The event is pushed to a BullMQ worker queue — no blocking, no latency added to the user's request.

Fingerprint & group

SHA-256 of error type + message + file:line. New fingerprint = new issue. Known fingerprint = counter increment. Same crash, one ticket.

Alert & surface

Email sent for new issues and regressions (with cooldowns to prevent noise). Dashboard shows event histograms, affected users, and full context.

Everything a production app needs

Issue deduplication

SHA-256 fingerprinting groups identical errors. One crash repeated 4,000 times stays as one issue — not 4,000 duplicate tickets flooding your inbox.

fingerprinting

Real-time email alerts

New issue detected? Email goes out immediately. Resolved issue re-opened by a regression? You'll know that too. Smart per-project cooldowns prevent alert fatigue.

4 hr cooldown

Breadcrumb trails

Clicks, navigation events, and console warnings are captured automatically in the 100 events leading up to a crash. Reproduce bugs without guessing.

auto-capture

Source map resolution

Upload source maps per release version. Minified production stack traces resolve to the exact line and column in your original source code.

per release

Server metrics

Track heap memory, CPU usage, and event loop lag from Node.js apps. Slow API requests and slow DB queries trigger separate alerts with independent cooldowns.

memory · cpu · lag

Uptime monitoring

Configure HTTP monitors per project. Status tracked as UP, DOWN, or UNKNOWN — response times logged, alerts sent when monitors go down, cooldowns prevent repeat noise.

per project

Weekly digest

Every Friday at noon, a project summary lands in every member's inbox. Issue counts, trends, top errors — all without opening the dashboard.

every friday

Two lines to get started

Ships as ESM + CJS. Works with any bundler — Vite, Webpack, Rollup, esbuild.

npm install bugcatch-sdk

React / Vite — main.tsx

import BugCatch from 'bugcatch-sdk';

BugCatch.init({
  dsn: import.meta.env.VITE_BUGCATCH_DSN,
  release: import.meta.env.VITE_APP_VERSION,
  environment: import.meta.env.MODE,
});

// Uncaught errors captured automatically.
// Attach user context after login:
BugCatch.setUser({ id: user.id, email: user.email });
BugCatch.setTag('plan', 'pro');

Node.js — Express error handler

import BugCatch from 'bugcatch-sdk';

BugCatch.init({
  dsn: process.env.BUGCATCH_DSN,
  release: process.env.npm_package_version,
  environment: process.env.NODE_ENV,
  autoCaptureBreadcrumbs: false, // no DOM
});

app.use((err, req, res, next) => {
  BugCatch.captureException(err, {
    path: req.path,
    method: req.method,
  });
  next(err);
});

Your data never leaves
your infrastructure.

BugCatch runs on MySQL, Redis, and Node.js. A single Docker Compose file spins up the full stack — API server, background worker, and both databases included.

  • No third-party data ingestion
  • No usage-based pricing or seat limits
  • No vendor lock-in
  • Full control over data retention policies
terminal
# Clone and start the full stack
git clone https://github.com/you/bugcatch
docker compose up --build

# Services
# API →       http://localhost:3000
# Dashboard → http://localhost:5173
# Swagger →   http://localhost:3000/api

# Configure once in .env
BUGCATCH_DSN=http://localhost:3000/ingest/{projectId}?key={sdkKey}

Start tracking errors
in five minutes.

npm install bugcatch-sdk