Skip to content
Back to projects

Event Registration Platform

NEET CON 2026

End-to-end event registration with payments, WhatsApp delivery, and QR check-in for a national conference.

Event platform — 2026Solo build — payment webhook handling and check-in flow
Next.jsMongoDBHDFC SmartGatewayWhatsApp API

Overview

Problem

A national conference needed reliable payment collection, automatic confirmation delivery, and fast attendee verification at the door.

Solution

A self-serve platform: attendees register and pay online, get an automatic WhatsApp confirmation with a QR pass, and staff scan passes at check-in from a live admin dashboard.

Architecture

Client

Public registration flow + staff-facing admin dashboard, both Next.js.

Payments

HDFC SmartGateway integration handling collection and verification.

Messaging

Meta WhatsApp Business API sending confirmations and passes.

Data

Registration, payment, and check-in records with admin-facing aggregates.

Feature Breakdown

  • Self-serve registration with HDFC SmartGateway payment collection
  • Automated WhatsApp confirmation and QR pass delivery on payment success
  • QR-based check-in scanning with a live admin dashboard

Implementation Detail

Issuing a pass only after payment webhook verification
export async function handlePaymentWebhook(payload: WebhookPayload) {
  const registration = await verifyAndFetchRegistration(payload);
  if (registration.passIssued) return; // idempotent — already handled

  const qr = await generateSignedQr(registration.id);
  await sendWhatsAppPass(registration.phone, qr);
  await markPassIssued(registration.id);
}

Challenge & Solution

Payment and pass delivery had to be reliable even with late or duplicate webhooks, and check-in needed to be fast with no manual lookups.

Built idempotent webhook handling with retry-safe pass generation, and bound each QR code to a server-side lookup so scanning is a single validated read.

Results

  • Zero manual steps between a payment and pass delivery.
  • Check-in became a single scan per attendee instead of a manual list lookup.