Back to all projects

UKM Expo ITS 2024 - Surabaya

Next.jsGoGinPostgreSQLTailwind CSSGCPXenditMidtrans
UKM Expo ITS 2024 - Surabaya

Timeline

Apr 2024 - Aug 2024

My Role

Lead Full Stack Web Developer

Type

Event Platform

Project Overview

UKM Expo ITS 2024 is an annual student organization fair hosted by the Directorate of Student Affairs at Institut Teknologi Sepuluh Nopember. The web platform was built to manage event promotion, ticket sales, and real-time updates, culminating in a high-traffic concert featuring Reality Club.

Key Features

  • Responsive Frontend: Built with TypeScript, Next.js, and Tailwind CSS for a mobile-first UI
  • Ticketing System: High-performance concurrent ticketing system that served over 12,000 users and 4,500 concurrent ticket purchases
  • Secure Payments: Seamless integration with Xendit and Midtrans for online transactions
  • Backend APIs: Powered by Go (Gin), with PostgreSQL for data persistence
  • Cloud Infrastructure: Deployed on Google Cloud Platform to ensure uptime and scalability
  • Security & Networking: Configured NGINX as a reverse proxy with SSL and domain management
  • Cross-functional Collaboration: Collaborated with Event, Marketing, and Finance teams to implement user-driven features

Technical Approach

The project architecture was designed with scalability and maintainability in mind. I utilized:

  • React Query for efficient server state management and seamless data-fetching.
  • Zustand for state management in React, reducing unnecessary re-renders and optimizing performance.
  • Pessimistic Locking in PostgreSQL to ensure safe concurrent updates to ticket availability without risk of overselling.
  • Cloud Infrastructure Management using Google Cloud Platform (GCP) for scalable deployment and resource management.

Development Process

Work was conducted in agile sprints with continuous feedback loops from stakeholders and cross-functional teams. Daily stand-ups and mid-week demos ensured development stayed aligned with organizational goals and user expectations.

Challenges

One of the major challenges was developing a ticketing system capable of handling over 4,500 concurrent transactions without performance degradation or errors. Ensuring that the ticket quantities were accurate and not oversold, especially during peak traffic times, required careful planning and robust solutions.

Solutions

To tackle the ticketing issue, I implemented "pessimistic locking" at the database level, which ensured that only one transaction could modify the ticket count at a time. This effectively eliminated the risk of overselling and maintained the integrity of ticket availability even under high concurrency.