Projects/Event Reservation Platform
Event Reservation Platform

Event Reservation Platform

Full-stack event booking app with JWT + Google OAuth login, SCB Sandbox QR payment, and Resend email confirmation.

Next.jsReactTypeScriptMUITailwind CSSExpressMongoDBMongooseJWTNextAuthResendSCB API

About this project

Users browse events with live seat availability, reserve tickets, and pay through a PromptPay QR generated by the SCB Sandbox API. After OAuth-fetching an SCB access token, the backend builds a three-part reference (transaction prefix + SHA256 of userId:eventId + nanoid) and requests a QR for the PromptPay biller. When SCB calls back to `/api/payment/confirm`, the payment record flips to paid and Resend sends a confirmation email with the reference number. Auth supports both classic JWT/bcrypt and Google OAuth via next-auth; the API is hardened with helmet, hpp, xss-clean, mongo-sanitize, rate-limit, and Joi schemas.

  • SCB Sandbox OAuth → QR create → webhook confirm — full payment flow
  • Three-field SCB reference: TXN-prefixed ID + truncated SHA256 + nanoid
  • JWT with bcrypt + Google OAuth via next-auth — two parallel login paths
  • Security middleware stack: helmet, hpp, xss-clean, mongo-sanitize, rate-limit, Joi

Key features

Hybrid auth

JWT + Google OAuth

PromptPay QR

SCB Sandbox + webhook confirm

Email confirm

Resend with inline HTML template

Live seats

Available count updates on book


Screenshots

Light theme home page

Events page

Payment page

Ticket page


Tech stack

Next.js
React
TypeScript
MUI
Tailwind CSS
Express
MongoDB
Mongoose
JWT
NextAuth
Resend
SCB API

Other projects