# bull-board 🎯 Bull Dashboard is a UI built on top of [Bull](https://github.com/OptimalBits/bull) to help you visualize your queues and their jobs. With this library you get a beautiful UI for visualizing what's happening with each job in your queues, their status and some actions that will enable you to get the jobs done.


## Notes
As this library provides only the visualization for your queues, keep in mind that:
- You must have either [Bull](https://github.com/OptimalBits/bull) or [BullMQ](https://github.com/taskforcesh/bullmq) installed in your projects;
- Aside the options to retry and clean jobs, this library is not responsible for processing the jobs, reporting progress or any other thing. This must be done in your application with your own logic;
- If you want to understand the possibilities you have with the queues please refer to [Bull's docs](https://optimalbits.github.io/bull/);
- This library doesn't hijack Bull's way of working.
If you want to learn more about queues and Redis: https://redis.io/.
## Starting
To add it to your project start by adding the library to your dependencies list:
```sh
yarn add bull-board
```
Or
```sh
npm i bull-board
```
## Hello World
The first step is to let bull-board know the queues you have already set up, to do so we use the `setQueues` method.
```js
const Queue = require('bull')
const QueueMQ = require('bullmq')
const { setQueues, BullMQAdapter, BullAdapter } = require('bull-board')
const someQueue = new Queue()
const someOtherQueue = new Queue()
const queueMQ = new QueueMQ()
setQueues([
new BullAdapter(someQueue),
new BullAdapter(someOtherQueue),
new BullMQAdapter(queueMQ),
]);
```
You can then add `UI` to your middlewares (this can be set up using an admin endpoint with some authentication method):
```js
const app = require('express')()
const { router } = require('bull-board')
app.use('/admin/queues', router)
// other configurations for your server
```
That's it! Now you can access the `/admin/queues` route and you will be able to monitor everything that is happening in your queues 😁
### Queue options
1. `readOnlyMode` (default: `false`)
Makes the UI as read only, hides all queue & job related actions
```js
const Queue = require('bull')
const QueueMQ = require('bullmq')
const { setQueues, BullMQAdapter, BullAdapter } = require('bull-board')
const someQueue = new Queue()
const someOtherQueue = new Queue()
const queueMQ = new QueueMQ()
setQueues([
new BullAdapter(someQueue, { readOnlyMode: true }), // only this queue will be in read only mode
new BullAdapter(someOtherQueue),
new BullMQAdapter(queueMQ, { readOnlyMode: true }),
]);
```
### Hosting router on a sub path
If you host your express service on a different path than root (/) ie. https://