
Event Reservation Platform
Full-stack event booking app with JWT + Google OAuth login, SCB Sandbox QR payment, and Resend email confirmation.
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
Other projects

Inventory Management (Frontend)
Frontend for a stock-request system with admin/staff roles, product CRUD, and approve/deny workflow. Backend provided by course.

No Car No Problem — Ride-sharing platform
Full ride-sharing app with customer/driver/admin/support roles, real-time chat, geospatial ride matching, and driver verification workflow.