A Node.js job scheduler with cron, date, and human syntax support, using worker threads for sandboxed execution.
Bree is a job scheduler for Node.js that enables developers to schedule and run background tasks using cron expressions, specific dates, or human-readable intervals. It executes jobs in isolated worker threads, providing reliability and control for production applications like email queues and periodic data processing.
Node.js developers building applications that require scheduled background jobs, such as email services, data aggregation, or automated reporting systems.
Developers choose Bree for its simplicity, fine-grained control without external databases, and robust features like worker thread isolation, graceful shutdowns, and support for multiple scheduling syntaxes.
Bree is a Node.js and JavaScript job task scheduler with worker threads, cron, Date, and human syntax. Built for @ladjs, @forwardemail, @spamscanner, @cabinjs.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Runs jobs in sandboxed Node.js worker threads for performance and safety, preventing single job failures from crashing the main process, as highlighted in the README's use of worker threads.
Supports cron expressions, specific dates, intervals, and human-readable strings (e.g., 'every 2 days'), offering multiple ways to define job timings without external libraries.
Does not require Redis or MongoDB for job state, reducing infrastructure complexity and allowing developers to manage state directly in their databases, per the philosophy section.
Includes features like cancellation, retries, throttling, and concurrency control, with support for graceful shutdowns via plugins like @ladjs/graceful, ensuring reliability in production.
Requires developers to handle job idempotency and state persistence themselves in their databases, as admitted in the Foreword, adding complexity for teams unfamiliar with such patterns.
Jobs are typically defined in a directory structure or static arrays, making it less flexible for applications that need to create or modify job schedules dynamically at runtime.
Major versions like v9.0.0 introduce breaking changes, requiring careful migration and updates, as noted in the Upgrading section, which can disrupt ongoing projects.
Lacks an integrated dashboard or UI for job tracking; monitoring relies on logging or external tools, forcing teams to build custom solutions for visibility into job performance.