Qurbani App

An entire Qurbani season, run end to end in three days

A registration and payments platform for Usmani Holdings’ annual Qurbani share programme.

Status
Live
Role
Product · Full-Stack · DevOps
Engagement
Client work
Stack
Next.js · MongoDB · Vercel · Cloudinary · QStash · Razorpay
Usmani admin bookings dashboard with totals and shares

The problem

An animal is shared by seven people, so every Qurbani season the organisers had to collect applications, verify payment screenshots, group seven buyers into one animal, issue tokens, assign volunteers and confirm completion — all by hand, across thousands of registrations in a few days.

What I built

End-to-end automation of registration, share grouping, volunteer allocation and completion — with payments built in.

  • Online registration + paymentEach registration takes its share count and pays via Razorpay.
  • Automatic groupingFilled groups of seven become one receipt, shown to admins.
  • Volunteer allocationAdmins assign receipts and everyone is notified automatically.
  • Completion trackingUnique receipt numbers let admins mark Qurbani complete — one or many at once.
  • PDF receiptsIssued at registration and again at completion.

How it is built

The whole season runs in a few days, so the system is built for a short, high-volume burst: thousands of users at once, payments that fail safely, and background jobs for every message and PDF.

  • When a payment fails — A failed payment never leaves a half-finished registration. The failure is recorded, the buyer is told what to do next, and admins can see exactly where it stopped.
  • Razorpay payments — Payments reconcile straight onto the admin dashboard.
  • QStash background jobs — Messages and PDFs run off the request path so bursts stay smooth.
  • Receipts as the unit of work — A unique receipt number ties each group of seven to a volunteer and a completion state.

Hard problem

Three days, thousands of users, failures in the middle

The whole season is one short burst, so the system has to stay correct when a payment fails halfway through.

Result

registrations in a single season
3,000+registrations in a single season
of users on the platform at once
Thousandsof users on the platform at once
of rupees in payments, in three days
Millionsof rupees in payments, in three days

Gallery

Usmani admin groups view with completed receipts
Qurbani registration landing page

Have a problem like this?

Tell me what you are trying to build and I will tell you how I would approach it.

Book a call
Next projectLilyContinue from Qurbani App