Skip to content

Why Taskora ​

Taskora is a distributed task queue for Node.js — designed from scratch in TypeScript with the developer experience that modern backends deserve.

Philosophy ​

  1. Task-centric, not queue-centric — You define tasks, not queues. The queue is an implementation detail.
  2. Progressive disclosure — task.dispatch(data) is enough to start. Retries, middleware, cron, monitoring unlock as you need them.
  3. Everything is composable — Middleware chains, event listeners, and flow control options compose naturally.
  4. Type safety is DX — If the types compile, the runtime works. No magic strings. No producer/consumer type drift.

Features at a Glance ​

CapabilityHow
Type-safe end-to-endInferred types from handler to dispatch to result
Schema validationAny Standard Schema library (Zod, Valibot, ArkType)
WorkflowsChain, group, chord — type-safe task pipelines
Koa-style middlewareOnion model — app-level and per-task
Versioning & migrationsBump version, add migration, deploy without draining
First-class testingIn-memory adapter + virtual time, no Docker needed
Flow controlDebounce, throttle, deduplicate — all atomic Lua
Batch collectAccumulate items, flush on delay/maxSize/maxWait
Graceful cancellationInstant via Redis pub/sub, with onCancel hooks
Distributed schedulingCron + intervals with leader election
Inspector & DLQQuery jobs, retry failures, auto-trim old entries

Package Structure ​

taskora              — core engine, types, task API (zero DB deps)
taskora/redis        — Redis adapter (peer dep: ioredis)
taskora/memory       — in-memory adapter (zero DB deps)
taskora/test         — test runner (wraps memory adapter)

ioredis is an optional peer dependency — only required when using taskora/redis. The core package has zero database dependencies.

Released under the MIT License.