FinepherFinepher
AR
Programming 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

Running a Small Business? This AI Tool Could Make Life Easier
Business
May 18, 2026

Running a Small Business? This AI Tool Could Make Life Easier

Running a small business means doing everything at once - handling invoices, replying to customers, managing payroll, marketing your business, and still trying to find time to grow.

Understanding .env in Node.js
DevOps
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?
Web Development
May 12, 2026

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

If you run a business website today, you’ve probably heard terms like SEO, GEO, and AEO everywhere.