Redis-free background jobs for Node.js. Persist jobs in your existing Postgres, MySQL, SQLite, or MongoDB. A distributed, durable BullMQ alternative with a built-in dashboard.
See the code
Sidequest is a Redis-free background job processor for Node.js. It persists jobs in the database you already run (PostgreSQL, MySQL, SQLite, or MongoDB), so you get durable, distributed background processing without standing up Redis. It is a production-grade BullMQ and pg-boss alternative, with a built-in web dashboard.
SELECT ... FOR UPDATE SKIP LOCKED on Postgres/MySQL), so each job runs once.For the complete documentation, visit docs.sidequestjs.com.
For a comprehensive FAQ, visit docs.sidequestjs.com/faq.
To get started with Sidequest, first install the main package:
npm install sidequest
# or
yarn add sidequest
Make sure you are using Node.js >= 22.6.0. Also, Sidequest does not run with Bun yet.
To keep the application minimal, the main package does not include the backend drivers. Thus you need to install only the driver you will use:
PostgreSQL (recommended)
npm install @sidequest/postgres-backend
# or
yarn add @sidequest/postgres-backend
npm install @sidequest/mysql-backend
# or
yarn add @sidequest/mysql-backend
npm install @sidequest/sqlite-backend
# or
yarn add @sidequest/sqlite-backend
npm install @sidequest/mongo-backend
# or
yarn add @sidequest/mongo-backend
// jobs/EmailJob.js
import { Job } from "sidequest";
export class EmailJob extends Job {
async run(to, subject, body) {
console.log(`Sending email to ${to}: ${subject}`);
// Your email sending logic here
return { sent: true, timestamp: new Date() };
}
}
// app.js
import { Sidequest } from "sidequest";
// Start Sidequest
await Sidequest.start({
// You can leave the config empty to use the default SQLite backend.
// Make sure to install the SQLite backend driver if you want to use it.
backend: {
driver: "@sidequest/postgres-backend",
config: "postgres://postgres:postgres@localhost:5432",
},
});
console.log("Sidequest started! Dashboard: http://localhost:8678");
// Somewhere in your application
import { Sidequest } from "sidequest";
import { EmailJob } from "./jobs/EmailJob.js";
// Simple job
await Sidequest.build(EmailJob).enqueue("user@example.com", "Welcome!", "Thanks for signing up!");
We welcome contributions! Please see our Contributing Guidelines for details.
This project is licensed under the LGPL-3.0-or-later license.
Made with ❤️ by Lucas Merencia and Giovani Guizzo
4,692 followers · starred Aug 2025
1,372 followers · starred Aug 2025
1,472 followers · starred Sep 2025
289 followers · starred Aug 2025
Redis-free background jobs for Node.js. Persist jobs in your existing Postgres, MySQL, SQLite, or MongoDB. A distributed, durable BullMQ alternative with a built-in dashboard.
See the code
Sidequest is a Redis-free background job processor for Node.js. It persists jobs in the database you already run (PostgreSQL, MySQL, SQLite, or MongoDB), so you get durable, distributed background processing without standing up Redis. It is a production-grade BullMQ and pg-boss alternative, with a built-in web dashboard.
SELECT ... FOR UPDATE SKIP LOCKED on Postgres/MySQL), so each job runs once.For the complete documentation, visit docs.sidequestjs.com.
For a comprehensive FAQ, visit docs.sidequestjs.com/faq.
To get started with Sidequest, first install the main package:
npm install sidequest
# or
yarn add sidequest
Make sure you are using Node.js >= 22.6.0. Also, Sidequest does not run with Bun yet.
To keep the application minimal, the main package does not include the backend drivers. Thus you need to install only the driver you will use:
PostgreSQL (recommended)
npm install @sidequest/postgres-backend
# or
yarn add @sidequest/postgres-backend
npm install @sidequest/mysql-backend
# or
yarn add @sidequest/mysql-backend
npm install @sidequest/sqlite-backend
# or
yarn add @sidequest/sqlite-backend
npm install @sidequest/mongo-backend
# or
yarn add @sidequest/mongo-backend
// jobs/EmailJob.js
import { Job } from "sidequest";
export class EmailJob extends Job {
async run(to, subject, body) {
console.log(`Sending email to ${to}: ${subject}`);
// Your email sending logic here
return { sent: true, timestamp: new Date() };
}
}
// app.js
import { Sidequest } from "sidequest";
// Start Sidequest
await Sidequest.start({
// You can leave the config empty to use the default SQLite backend.
// Make sure to install the SQLite backend driver if you want to use it.
backend: {
driver: "@sidequest/postgres-backend",
config: "postgres://postgres:postgres@localhost:5432",
},
});
console.log("Sidequest started! Dashboard: http://localhost:8678");
// Somewhere in your application
import { Sidequest } from "sidequest";
import { EmailJob } from "./jobs/EmailJob.js";
// Simple job
await Sidequest.build(EmailJob).enqueue("user@example.com", "Welcome!", "Thanks for signing up!");
We welcome contributions! Please see our Contributing Guidelines for details.
This project is licensed under the LGPL-3.0-or-later license.
Made with ❤️ by Lucas Merencia and Giovani Guizzo
4,692 followers · starred Aug 2025
1,372 followers · starred Aug 2025
1,472 followers · starred Sep 2025
289 followers · starred Aug 2025