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 disclosuretask.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.