Docs · Concepts

Concepts.

The mental model. Read this once. Refer back when something behaves in a way that surprises you.

Org and Projects

CodeRadar has exactly one org: Goodventures. Inside the org are projects; one per shipping product. Each project has its own DSN, quota, alert rules, and member list. Adding a member to the Goodventures Clerk org gets them sign-in, but they only see projects they've been added to. There's no way to create a second org. That's deliberate.

Event

An event is one captured datapoint. Errors, warnings, info, debug, fatal. Events have a level, a message or exception, an environment, a release, optional user and tags, and (almost always) a fingerprint. The wire format is OTLP-compatible and documented in the API reference.

Fingerprint

The dedup key. CodeRadar computes a fingerprint per event from (exception.type, exception.value, top-of-stack file + line + function). Events with the same fingerprint group together — that group is what the dashboard calls an issue. When you see "17 events / 3 users" on a row, that's one fingerprint.

You can override the fingerprint by setting fingerprint: ["...", "..."] on the event. Useful when error messages contain dynamic content (e.g., a UUID) that you don't want to bust the group.

Release

A release is a tag for a specific deployment. The convention is project@semver ([email protected]) or project@sha (truecom@a8c2f11). When the SDK is initialized with a release, every event captured during that deploy gets stamped with it. Releases enable:

  • First-seen / last-seen per fingerprint, scoped to a release.
  • Regression detection — fingerprint resolved in release N, fires in release N+1.
  • Source-map matching — uploaded source maps are scoped per release.
  • Deploy correlation — see error volume change across deploys.

Environment

Free-form. Convention: development, staging, production, preview-*. Alert rules can scope to environment (env:production). The dashboard's environment filter is just a where environment = ? on ClickHouse.

Breadcrumb

A small datapoint captured before an event. Up to 100 per event. Categories: navigation, http, console, ui.click, ui.input, render, or any custom category you set. The buffer is a ring; oldest crumb is dropped when full. Breadcrumbs are always attached to the captured event — there's no separate query for them.

Trace and Span

A trace is a group of spans sharing a trace_id. A span has a name, start, end, optional parent_id, and free-form attributes. CodeRadar uses W3C tracecontext for propagation across services, so a request that crosses 3 services produces 3 spans in 1 trace.

If an event has a trace_id field, the dashboard links it to the trace tree. You can pivot from any error to the full timing waterfall of the request that produced it.

User

One user per event. Set with setUser({ id, email_hash, segment }) or via the request middleware. Email is hashed (SHA-256) by default; raw emails are scrubbed by the default beforeSend hook. You can override.

Tag

A free-form key/value attached to events. Indexed on the ClickHouse side, queryable in the search box (tag.tenant:acme). Use tags for cross-cutting attributes (region, customer, feature flag).

Sample rate

Two knobs: sampleRate (errors; default 1.0) and tracesSampleRate (default 0.0). The error sample rate is almost always 1.0 — losing errors is bad. The trace rate is typically 0.1 to 0.5; full tracing is expensive in event volume.

Adaptive sampling: when the project is over its quota, the server returns an X-CodeRadar-Sample-Rate response header and the SDK temporarily lowers its rate. The SDK still keeps errors at 100% — only traces are sampled down.

Alert rule

A query, a threshold, a list of channels, optional cooldown. Two kinds:

  • Threshold — fire when an event count or rate crosses a number. Evaluated every minute.
  • Pattern — fire on a specific pattern (new fingerprint, regression, quota burn). Evaluated instantly via pub/sub.

Channel

An alert destination. Slack, email, generic webhook, PagerDuty (roadmap), Microsoft Teams (roadmap), SMS (roadmap). Each channel has a type and a target. Channels are project-scoped — the same Slack workspace can have one channel per project.

Issue lifecycle

See the incident workflow on the homepage for the eight-state lifecycle (captured, ingested, alerted, acknowledged, triaged, fix-in-flight, resolved, regressed). All transitions are optional; the system records what happened.

Source map

For browser stack traces. Upload at release time via the CLI or the SDK's release hook. The dashboard fetches the right map based on the event's release tag and resolves the stack to original source. Maps are kept for the configured retention window (default 30 days), then deleted.

DSN

Format: https://[email protected]/PROJECT_ID. Public keys are write-only, scoped to one project, rate-limited per origin, safe in browser bundles. Rotate from app.coderadar.app/settings/keys.