Skip to content

← Back to the Labs

L3:limited-quota-event-ticketing · Software Wing · Featured

Limited-quota event ticketing

Transactional booking prevents overselling for premium events, with online payments and QR e-tickets.

Client
DariOrdal
Role
Full Stack Engineer, freelance in a two-person team
Period
Jul 2025 to Aug 2025

Results

  • 57%

    Share of repository commits I authored (54 of 95), across 24 merged pull requests

    Counted in git history and pull requests from Jul to Aug 2025.

    Verified
  • 1 transaction

    Atomic quota check and decrement prevent selling the last seat twice

    Verified in the booking code as a design property, not measured as a production incident count.

    Strongly inferred

Problem

DariOrdal sells limited-quota tickets for premium events. Concurrent checkouts risked selling the last seat twice, while gaps between payment and ticket issuance created manual work for organizers.

What I did

  • I reorganized the Next.js 14 API into repository and service layers and automated deployment from GitHub.
  • I put quota checks and atomic decrements for each ticket tier inside one Prisma checkout transaction to prevent double-selling.
  • I connected iPaymu payments and callbacks to QR e-ticket generation and email invoices, covering payment through event entry.
  • I built an admin dashboard for event management, sortable and exportable transaction tables, refresh-token sessions and analytics.

Architecture

  1. ClientTicket storefrontNext.js 14
  2. ClientAdmin dashboardEvent and transaction management
  3. ServiceNext.js API routesRepository and service layers
  4. DataPostgreSQL (Prisma)Ticket quotas and orders
  5. ExternaliPaymuPayment gateway

Data flow

  • Ticket storefront to Next.js API routes (checkout)
  • Admin dashboard to Next.js API routes (manage)
  • Next.js API routes to PostgreSQL (Prisma) (atomic booking)
  • Next.js API routes to iPaymu (payments)
  • iPaymu sends asynchronously to Next.js API routes (callbacks)

Tech stack

  • Next.js 14
  • TypeScript
  • Prisma
  • PostgreSQL
  • Redis
  • iPaymu
  • AWS S3
  • TanStack Table
  • Tailwind CSS
  • shadcn/ui
  • Bun

L2 · Related career entryFull Stack Engineer (freelance) · DariOrdal