Type-safe by default
Jobs are defined with Zod. Payloads validate at enqueue and at run. TypeScript inference flows end-to-end.
A type-safe background job SDK for Next.js. Define, enqueue, and monitor jobs from your existing codebase — no new infrastructure, no workflow DSL, no lock-in.
Free forever for hobby projects · No credit card required
import { createJobRouter, job } from "@queuebase/nextjs"; import { z } from "zod"; export const jobs = createJobRouter({ sendEmail: job({ input: z.object({ to: z.string().email() }), handler: async ({ input }) => { await sendEmail(input.to); }, }), });
Trusted by engineering teams at
A complete background job toolkit that stays out of your way. Type-safe schemas, built-in monitoring, and zero infrastructure to manage.
Jobs are defined with Zod. Payloads validate at enqueue and at run. TypeScript inference flows end-to-end.
Throughput, duration, and error rate for every job — no tracing setup, no separate dashboards.
Exponential or linear backoff, max attempts, and per-job overrides. Configure once, never babysit.
See every job's status, payload, logs, and stack trace. Rerun failures in one click.
Write schedules in cron syntax or plain English. Overlap control and timezones handled for you.
Callback model means your code executes on your infrastructure. No lock-in, no vendor runtime.
Drop it into an existing Next.js app. No new services, no infra migration.
One object, one source of truth. Input schemas, handlers, and retry config all live together.
import { createJobRouter, job } from "@queuebase/nextjs"; import { z } from "zod"; export const jobs = createJobRouter({ sendEmail: job({ input: z.object({ to: z.string().email() }), handler: async ({ input }) => { await sendEmail(input.to); }, }), });
Stop building your own Bull Board. Queuebase ships a full monitoring UI out of the box.
Compare
A focused tool for a focused problem.
|
Qb
Queuebase | In Inngest | Td Trigger.dev | Q QStash | Bq BullMQ | Vc Vercel Cron Jobs | |
|---|---|---|---|---|---|---|
| Type safety | ✓ Zod built-in | Via event schemas | ✓ | ✗ | Manual | ✗ |
| Self-hosting | Hosted | Yes (OSS + Redis) | Yes | ✗ | Self-managed | ✗ |
| Pricing model | Per-job | Per-step | Per-run + duration | Per-request | Free (Redis cost) | Plan-based |
| Languages | TS | TS, Py, Go | TS | Any (HTTP) | Node only | Any (HTTP) |
| Step functions | Atomic jobs | ✓ | ✓ | ✗ | Flows | ✗ |
| Dashboard | ✓ built-in | Cloud only | ✓ | Basic | Bull Board | Vercel only |
Start free. Upgrade when you outgrow it. No per-step multipliers.
For hobby projects and side-builds.
For teams shipping production apps.
For teams with specific compliance or volume needs.
All plans include: unlimited team members · SOC 2 (in progress) · 99.9% uptime target
If you've ever installed an npm package, you already know how to use Queuebase.
$ npm i @queuebase/nextjs $ npx queuebase init # in app/api/queuebase/route.ts export const { POST } = createRouteHandler({ jobs }); $ npx queuebase dev ✓ ready on :3847