فاينفرفاينفر
EN
برمجة 2 min read

How to Setup Bull Board in NestJS (Simple Guide)

Asha Vardhan

Asha Vardhan

April 9, 2026

In this guide, I will show you how to setup Bull Board in a NestJS project.
Bull Board is a UI dashboard to monitor your BullMQ queues (jobs, status, retries, etc).

see the working example: https://github.com/habilm/bullmq-nestjs


What is Bull Board?

Bull Board gives you a web UI where you can:

  • See all jobs in queue

  • Check failed jobs

  • Retry or delete jobs

  • Monitor queue activity


Step 1: Install Packages

Run this command:

npm install @bull-board/api @bull-board/express

Step 2: Create Bull Board Setup

Create a new file like bull-board.ts:

import { ExpressAdapter } from '@bull-board/express';
import { createBullBoard } from '@bull-board/api';
import { Queue } from 'bullmq';
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';

export function setupBullBoard(app: any, emailQueue: Queue) {
  const serverAdapter = new ExpressAdapter();
  serverAdapter.setBasePath('/admin/queues');

  createBullBoard({
    queues: [new BullMQAdapter(emailQueue)],
    serverAdapter,
  });

  app.use('/admin/queues', serverAdapter.getRouter());
}

Step 3: Update main.ts

Now connect Bull Board to your NestJS app.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { setupBullBoard } from './bull-board';
import { emailQueue } from './queue';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  setupBullBoard(app, emailQueue);

  await app.listen(3000);
}
bootstrap();

Step 4: Run Your App

Start your NestJS app:

npm run start

Step 5: Open Bull Board

Open your browser:

http://localhost:3000/admin/queues

You will see:

  • Job list

  • Completed jobs

  • Failed jobs

  • Queue details


Tips

  • You can add multiple queues:

queues: [
  new BullMQAdapter(emailQueue),
  new BullMQAdapter(paymentQueue),
]
  • Protect the route (/admin/queues) using auth (important for production)

  • Use separate Redis for production workloads


Example using Express middleware:

import * as basicAuth from 'express-basic-auth';

app.use(
  '/admin/queues',
  basicAuth({
    users: { admin: 'password' },
    challenge: true,
  }),
);

Conclusion

Now you have Bull Board setup in your NestJS app 🎉You can monitor your queues easily and manage jobs without checking logs.

Related Articles

More insights from our engineering team

Understanding .env in Node.js
ديفوبس
May 17, 2026

Understanding .env in Node.js

When building a Node.js app, you’ll often see a file called .env. At first, it may look confusing, but it’s actually one of the most important parts of managing your application properly.

SEO vs GEO vs AEO - What’s the Difference?
تطوير الويب
May 12, 2026

SEO vs GEO vs AEO - What’s the Difference?

إذا كنت تدير موقعًا تجاريًا اليوم، فمن المحتمل أنك سمعت مصطلحات مثل تحسين محركات البحث (SEO)، وتحسين المحركات التوليدية (GEO)، وتحسين المحركات الإجابية (AEO) في كل مكان.

Say Hello to Vite+: The One Tool That Just Makes Sense
تطوير الويب
May 9, 2026

Say Hello to Vite+: The One Tool That Just Makes Sense

If you’ve been building web apps for a while, you know the struggle. You start a project with Vite because it’s blazing fast… then suddenly you’re wiring up Vitest for tests, ESLint for linting, Prettier for formatting, and a bunch of other tools just to keep things running smoothly.