{"name":"Sidequest: A Scalable Background Job Processor for Node.js","description":"Sidequest is a modern, scalable background job processor designed for Node.js applications. It offers reliable job processing with support for multiple database backends, a comprehensive web dashboard, and robust monitoring capabilities. Built with TypeScript, Sidequest ensures high performance and flexible job lifecycle management for production environments.","github":"https://github.com/sidequestjs/sidequest","url":"https://osrepos.com/repo/sidequestjs-sidequest","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/sidequestjs-sidequest","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/sidequestjs-sidequest.md","json":"https://osrepos.com/repo/sidequestjs-sidequest.json","topics":["sidequest","nodejs","typescript","background jobs","queue","concurrency","distributed systems","job processor"],"keywords":["sidequest","nodejs","typescript","background jobs","queue","concurrency","distributed systems","job processor"],"stars":null,"summary":"Sidequest is a modern, scalable background job processor designed for Node.js applications. It offers reliable job processing with support for multiple database backends, a comprehensive web dashboard, and robust monitoring capabilities. Built with TypeScript, Sidequest ensures high performance and flexible job lifecycle management for production environments.","content":"## Introduction\n\nSidequest is a modern, scalable background job processor specifically designed for Node.js applications. Built with TypeScript, it offers a robust solution for handling long-running tasks, scheduled operations, and asynchronous processes without blocking your main application thread. Sidequest ensures reliable job processing with support for multiple database backends, a comprehensive web dashboard for monitoring, and flexible job lifecycle management, making it ideal for production environments.\n\n## Installation\n\nTo get started with Sidequest, first install the main package:\n\nbash\nnpm install sidequest\n# or\nyarn add sidequest\n\n\nPlease ensure you are using Node.js >= 22.6.0.\n\nSidequest's main package does not include backend drivers to keep the application minimal. You need to install only the driver you plan to use.\n\n**PostgreSQL (recommended)**\n\nbash\nnpm install @sidequest/postgres-backend\n# or\nyarn add @sidequest/postgres-backend\n\n\n**MySQL**\n\nbash\nnpm install @sidequest/mysql-backend\n# or\nyarn add @sidequest/mysql-backend\n\n\n**SQLite (default, not recommended for production)**\n\nbash\nnpm install @sidequest/sqlite-backend\n# or\nyarn add @sidequest/sqlite-backend\n\n\n**MongoDB**\n\nbash\nnpm install @sidequest/mongo-backend\n# or\nyarn add @sidequest/mongo-backend\n\n\n## Examples\n\nHere's how to integrate Sidequest into your application.\n\n### 1. Create a Job class\n\nDefine your background task logic by extending the `Job` class:\n\ntypescript\n// jobs/EmailJob.js\nimport { Job } from \"sidequest\";\n\nexport class EmailJob extends Job {\n  async run(to, subject, body) {\n    console.log(`Sending email to ${to}: ${subject}`);\n    // Your email sending logic here\n    return { sent: true, timestamp: new Date() };\n  }\n}\n\n\n### 2. Configure and Start Sidequest\n\nInitialize and start the Sidequest worker. You can configure your preferred backend here:\n\ntypescript\n// app.js\nimport { Sidequest } from \"sidequest\";\n\n// Start Sidequest\nawait Sidequest.start({\n  // You can leave the config empty to use the default SQLite backend.\n  // Make sure to install the SQLite backend driver if you want to use it.\n  backend: {\n    driver: \"@sidequest/postgres-backend\",\n    config: \"postgres://postgres:postgres@localhost:5432\",\n  },\n});\n\nconsole.log(\"Sidequest started! Dashboard: http://localhost:8678\");\n\n\n### 3. Enqueue Jobs\n\nOnce Sidequest is running, you can enqueue jobs from anywhere in your application:\n\ntypescript\n// Somewhere in your application\nimport { Sidequest } from \"sidequest\";\nimport { EmailJob } from \"./jobs/EmailJob.js\";\n\n// Simple job\nawait Sidequest.build(EmailJob).enqueue(\"user@example.com\", \"Welcome!\", \"Thanks for signing up!\");\n\n\n## Why Use Sidequest?\n\nSidequest stands out with a comprehensive set of features designed for modern Node.js applications:\n\n*   **High Performance**: Utilizes worker threads for non-blocking job processing, ensuring your application remains responsive.\n*   **Multiple Backends**: Supports PostgreSQL, MySQL, SQLite, and MongoDB out of the box, offering flexibility in your data storage choices.\n*   **ESM and CJS Support**: Fully compatible with both modern ES Modules and CommonJS.\n*   **TypeScript Support**: Natively supports TypeScript jobs, especially with Node.js >= v23.6.0.\n*   **Web Dashboard**: Provides a beautiful, responsive dashboard for real-time monitoring of jobs and queues.\n*   **Queue Management**: Offers multiple queues with configurable workers and priorities to manage your workload effectively.\n*   **Job Lifecycle Management**: Features configurable retry mechanisms with exponential backoff, snooze, and fail options for robust error handling.\n*   **Scheduled Jobs**: Allows scheduling jobs to run at specific times or intervals.\n*   **Job Uniqueness**: Prevents duplicate jobs with flexible uniqueness constraints.\n*   **CLI Tools**: Includes command-line interface tools for database migrations and management.\n*   **Monorepo Architecture**: Designed with modular packages for flexible deployment and easier maintenance.\n\n## Links\n\n*   **Documentation**: <a href=\"https://docs.sidequestjs.com\" target=\"_blank\">https://docs.sidequestjs.com</a>\n*   **GitHub Repository**: <a href=\"https://github.com/sidequestjs/sidequest\" target=\"_blank\">https://github.com/sidequestjs/sidequest</a>\n*   **Issue Tracker**: <a href=\"https://github.com/sidequestjs/sidequest/issues\" target=\"_blank\">https://github.com/sidequestjs/sidequest/issues</a>\n*   **Discussions**: <a href=\"https://github.com/sidequestjs/sidequest/discussions\" target=\"_blank\">https://github.com/sidequestjs/sidequest/discussions</a>","metrics":{"detailViews":8,"githubClicks":16},"dates":{"published":null,"modified":"2026-01-13T00:00:59.000Z"}}