How to Setup Bull Board in NestJS (Simple Guide)

  • Home
  • How to Setup Bull Board in NestJS (Simple Guide)

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:


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:


Tips

queues: [
  new BullMQAdapter(emailQueue),
  new BullMQAdapter(paymentQueue),
]

Optional: Add Basic Auth (Recommended)

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.