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
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.