JobMonitor

Background job queue dashboard. Polls a jobs resource (or whichever you pass), groups rows by status, and exposes retry / cancel actions per row.

Installation

pnpm dlx shadcn@latest add @shadmin/job-monitor

Usage

import { JobMonitor } from '@/components/admin';
 
<JobMonitor resource="jobs" pollInterval={5000} />
<JobMonitor
  resource="jobs"
  pollInterval={2000}
  tabs={["failed", "running", "queued"]}
/>

Job record shape

interface JobRecord {
  id: string | number;
  type?: string;
  status: "queued" | "running" | "failed" | "done" | "cancelled";
  payload?: unknown;
  attempts?: number;
  lastError?: string | null;
  createdAt?: string;
  updatedAt?: string;
}

Props

PropRequiredTypeDefaultDescription
resourceOptionalstringContextOverride resource
pollIntervalOptionalnumber5000Polling interval in ms (0 = disabled)
tabsOptionalJobStatus[]["running","queued","failed","done"]Tab order
statusSourceOptionalstring"status"Record field name
typeSourceOptionalstring"type"Record field name
payloadSourceOptionalstring"payload"Record field name
errorSourceOptionalstring"lastError"Record field name
attemptsSourceOptionalstring"attempts"Record field name
actionsOptionalbooleantrueShow retry/cancel buttons

Actions

  • Retry — visible on failed rows. Sets status: 'queued' and increments attempts.
  • Cancel — visible on running and queued rows. Sets status: 'cancelled'.

Polling

Wraps useGetList with TanStack Query's refetchInterval. Set pollInterval={0} to disable. Recommended values: 200010000 ms.

Limitations (v1)

  • No log-tail (would require a separate streaming endpoint).
  • No payload editing — payload is read-only.
  • No bulk-retry / bulk-cancel across many rows.
  • Cache hit/miss tracking deferred to <DataProviderDevtools>.