Free forever: 5 resume reviews + 10 AI actions every month. Claim your free spot →
ReachRole

Backend Developer project

Build a background job queue with retries and a dead-letter list

An API that accepts jobs and processes them asynchronously — the retry and failure-handling logic is the actual test, not the happy path.

8-11 hoursEstimated time
IntermediateDifficulty
5Graded criteria
RepoWhat you submit

The brief

Build a small job queue: an API endpoint accepts jobs (e.g. "send email" with a payload), a separate worker process pulls jobs off the queue and processes them, failed jobs retry with exponential backoff up to a limit, and jobs that exhaust retries move to a dead-letter list you can inspect. Use Redis with BullMQ, or a DB-backed queue table if you don't want a Redis dependency.

Suggested stack

Node.js or any backend framework Redis + BullMQ, or a DB-backed queue table

What you hand in

  • A public GitHub repository with the API, the worker, and a README
  • A README describing the architecture (how the API and worker communicate) and the retry/backoff strategy
  • A way to list dead-lettered jobs, either an endpoint or a documented query

Grading happens against the rubric below, so read it before you start — not after.

How this is graded

Published in advance and weighted out of 100. Nothing here is a surprise.

Queue correctness and idempotency 30 pts

Jobs are processed exactly once under normal conditions, and reprocessing a job (e.g. after a crash) doesn't cause duplicate side effects.

Retry and dead-letter handling 25 pts

Failed jobs retry with increasing backoff up to a defined limit, then land in a dead-letter list instead of retrying forever or vanishing.

Worker isolation from the API process 20 pts

The API responds immediately after enqueueing; job processing happens in a separate worker process/loop, not inline in the request handler.

Observability 15 pts

There's a way to see a job's current status (queued, processing, failed, dead-lettered) without reading server logs.

Finish 10 pts

No console errors or crashes, no broken layout, no leftover placeholder text or commented-out code.

Why this project is worth your weekend

  • Asynchronous processing is behind nearly every real backend feature that sends email, generates a report, or calls a slow third-party API.
  • Retry and backoff logic is where junior submissions usually stop, and it's exactly what separates a toy queue from one a team could trust in production.
  • An interviewer can kill the worker mid-job and check whether the job is lost, duplicated, or correctly recovered.

Where people lose points

  • Processing jobs synchronously inside the API request handler, defeating the entire purpose of a queue.
  • Retrying a failed job forever with no backoff or cap, which can flood a downstream service during an outage.
  • No way to inspect a dead-lettered job's payload or failure reason, so a stuck job is invisible until a user complains.

Other Backend Developer projects

Two or three of these turn an empty resume into a portfolio.

Back to the roadmap

Built it? Get it scored against this rubric.

Submit your work and get a score on every criterion above, written feedback, and three resume bullets you can use straight away.

Submit for grading Free to start. Grading uses one AI action.