Skip to Content
Dashboard

Dashboard

The monorepo includes a web UI adapted from the pg-boss dashboard  under apps/queue-service-dashboard. Use it when a job is stuck, a cron did not fire, or you need to read a payload without digging through Postgres.

What you can see

AreaUse
OverviewAggregate stats, problem queues, recent warnings
JobsFilter by state and queue; open a job for payload and output
QueuesPer-queue stats
SchedulesCron schedules registered in pg-boss (YAML cron_jobs and related)
WarningsWarning history when persistence is enabled

You can cancel, retry, resume, or delete jobs from the UI when debugging. Example: a delayed publish never ran → open Jobs, find the queue and state, inspect runAt / payload, then retry or cancel.

Run with Docker Compose

Root docker-compose.yml starts Postgres, queue-service, and a dashboard service on port 3000.

# from repo root, after docker/database/.env and dashboard env are set docker compose up -d database # start queue-service once so the pg-boss schema exists docker compose up -d queue-service-dev docker compose up -d pg-boss-dashboard

Open http://localhost:3000 .

Compose’s pg-boss-dashboard image uses @pg-boss/dashboard and reads docker/dashboard/.env:

# Same DB as queue-service (queue-service uses POSTGRES_DATABASE_URL) DATABASE_URL=postgresql://user:pass@database:5432/bq_queue # Optional basic auth # PGBOSS_DASHBOARD_AUTH_USERNAME=admin # PGBOSS_DASHBOARD_AUTH_PASSWORD=secret

Point DATABASE_URL at the same database queue-service uses. Default pg-boss schema is pgboss unless you set PGBOSS_SCHEMA.

Run the adapted app from source

cd apps/queue-service-dashboard # Set DATABASE_URL (and optional PGBOSS_SCHEMA, auth vars); see env.ts npm run dev

This is the workspace package with Schedules and the rest of the UI. Prefer it when you want the in-repo adaptations rather than the upstream npm image.

Access control

The dashboard talks directly to Postgres. Treat it as an admin surface.

  • Prefer private network only, or put it behind your edge with auth.
  • Set dashboard auth env vars when it is reachable beyond localhost.
  • It does not use REQUEST_SIGNING_SECRET; locking down the UI is separate from job API signing.
Last updated on