.ts
Immersia AI & XR Summer Bootcamp
Back to Projects
Case Study
Completed

Immersia AI & XR Summer Bootcamp

Registration, payment, and admin platform for Immersia's 2026 tech bootcamp

Role

Full Stack Developer

Year

2026

Tech Stack

9 Technologies

Status

Completed

Overview

Immersia needed a complete end-to-end platform to register, pay, and manage up to 150 campers across 3 cohorts of their 2026 AI & XR Summer Tech Bootcamp for ages 10–17. I built the entire system: a GSAP-animated public landing page, a 4-step registration form, Paystack payment processing with dual-layer idempotent confirmation, PDF receipt generation, a JWT-protected admin dashboard with real-time stats and CSV export, and a waitlist flow for when cohorts sell out. Built with Next.js 14, MongoDB, and PDFKit.

The Problem

Immersia needed a complete platform to handle registrations and payments for their 2026 AI & XR Summer Tech Bootcamp — 150 spots across 3 cohorts, ages 10–17, with early-bird pricing, laptop rental add-ons, and a robotics elective. There was no off-the-shelf tool that handled Paystack payments, PDF receipt emails, an admin dashboard for admission decisions, and a waitlist for sold-out cohorts — all in one place.

Screenshots

Immersia AI & XR Summer Bootcamp - Image 1
1 / 6

Challenges

01

Ensuring payment is confirmed even when Paystack webhooks are delayed, duplicated, or arrive out of order — a race condition in a live payment system means lost revenue or double-confirmation bugs.

02

Generating PDF receipts on the fly and attaching them to confirmation emails without spinning up a separate document service.

03

Securing the admin dashboard with no third-party auth provider — complete control over the session model and no external dependency.

04

Handling early-bird vs regular pricing tiers, variable add-ons (laptop rental, robotics elective), and sold-out waitlist states — all configurable live by the admin without redeployment.

Solutions

01

Built dual-layer idempotent payment confirmation: webhook (HMAC-SHA512 verified) and success-page redirect both call a shared `reconcileAndConfirm()` that always re-queries Paystack's `/transaction/verify` as the source of truth — whichever fires first wins, the other is a no-op.

02

Used PDFKit for server-side PDF generation, piped as a buffer directly into Nodemailer as an email attachment — no temp files, no external service.

03

Built custom JWT auth (HS256 via `jose`) with audience-scoped tokens stored in httpOnly, secure, sameSite=strict cookies. Middleware gates every `/admin` and `/api/admin` route.

04

All pricing, capacity, cutoff dates, and add-on fees live in a MongoDB Settings collection — the admin updates them from the dashboard and they take effect instantly.

Key Highlights

Idempotent Paystack Flow: Webhook + redirect both confirm via a shared `reconcileAndConfirm()` that re-queries Paystack — no double-processing, no missed payments even if the webhook is delayed.

PDF Receipts on Confirmation: PDFKit generates itemised receipts (registration ID, parent/participant info, course selections, pricing in Naira) attached to every confirmation email.

Admin Dashboard: Real-time stats, registration list with filtering, admit/reject workflow, settings panel, CSV export, and waitlist viewer — all JWT-protected.

Kobo-Precise Financials: All amounts stored as kobo (₦1 = 100 kobo) matching Paystack's native unit — zero floating-point errors in any financial calculation.

Scale & Scope

150

Camper Capacity

3

Cohorts

6

Courses

10–17

Age Range

Technology Stack

Next.js 14
TypeScript
Tailwind CSS
MongoDB
Mongoose
Paystack
Nodemailer
JWT (jose)
Zod

Outcome

Launched at aixrbootcamp.com handling the full camper journey — animated landing, multi-step registration, Paystack payment, PDF receipts via email, and a live admin dashboard for the Immersia team.