Serupa Ticket Hub: Event Ticketing Platform
An event ticketing platform with an attendee site, an organizer dashboard and an Express API, from event discovery to QR e-tickets.
Key results
3 apps
Delivered as an Express API, an attendee site and an organizer dashboard
95%
Share of commits I authored on the attendee site and the organizer dashboard (62 of 65)
34%
Share of backend commits I authored (45 of 133); my teammate wrote the order and payment code
- Full Stack Engineer in a two-person team, responsible for the API foundation, attendee site and organizer dashboard
- Jun 2025 to Aug 2025
- Serupa
- Featured
- L3:event-ticketing-platform
Results
3 apps
Delivered as an Express API, an attendee site and an organizer dashboard
95%
Share of commits I authored on the attendee site and the organizer dashboard (62 of 65)
34%
Share of backend commits I authored (45 of 133); my teammate wrote the order and payment code
Problem
Serupa needed its own ticketing platform: organizers publish events with ticket tiers, attendees find events and get free or paid tickets online, and every order ends in a ticket that can be shown at the door. Two freelance engineers built it as three apps between June and August 2025.
Contribution
- I set up the API on Express 5 and Bun with routes, controllers, services and repositories over PostgreSQL and Drizzle, plus Helmet, rate limiting, structured logs, seed data and GitHub Actions deploys.
- I built accounts and events in the API: JWT access and refresh tokens, email verification and password reset, user and admin roles, event search with filters, a Redis event cache with invalidation, rate-limited view counts and S3 uploads for event covers and profile photos.
- I built the attendee site in Next.js with TanStack Query, from event discovery and search to event pages with ticket tiers. It includes a free-ticket flow, checkout with a payment method choice, payment result pages and My Tickets with QR codes, plus SEO metadata and a sitemap.
- I turned a v0-generated scaffold into the organizer dashboard and connected sign-in and event creation, editing and listing, with sub-categories and a location map, to the API.
- My teammate built ticket orders and payments in the API: quota and per-user limits, payment links and callbacks for QRIS, cards, e-wallets and virtual accounts, PDF invoices, status emails and Socket.IO payment events. My checkout and My Tickets pages call those endpoints.
Architecture
Gallery
Tech stack
Express
TypeScript
Bun
PostgreSQL
Drizzle ORM
RedisSocket.IO
JWT
Google OAuth
AWS S3Next.js 15
TanStack Query
Tailwind CSS
shadcn/ui
GitHub Actions