Mandai Express Booking System
Synchronizing high-traffic transit logistics with secure payment architecture - Establishing a seamless booking ecosystem through real-time inventory management and AWS cloud integration.
Handling Other People's Money
Messing up payments is not an option. I needed a system that was secure enough to handle real credit card transactions without storing sensitive data on my own server.
I integrated the Stripe API to handle the heavy lifting. This ensures that every transaction is encrypted and PCI-compliant, so user data stays safe even if my database were to get compromised.
Transaction Layer: Secure API handshake and real-time payment
verification.
Operational Oversight: Live status transition from 'Pending'
to 'Confirm'.
The "God Mode" Dashboard
A booking app is useless if the business owners can't see who is booking what. I built a custom Admin Portal that gives the staff full control.
Instead of digging through database rows, the staff gets a clean visual interface to manage schedules, refund tickets, and track daily revenue in real-time.
Surviving the Traffic Spike
It doesn't matter how good the code is if the server crashes when 100 people visit at once. I deployed the app on AWS EC2 to ensure it stays online.
I set up auto-scaling rules so that if traffic suddenly spikes (like during a holiday sale), the server automatically adds more resources to handle the load without slowing down.
Infrastructure: Leveraging AWS EC2 and RDS for
enterprise-level scalability.
Backend Logic: Defining secure administrative routes and
middleware.
Smart Route Calculation
Bus routes are complex - stops change, times shift. I wrote a custom routing algorithm that calculates the most efficient path between two cities.
It automatically accounts for layovers and transfer times, ensuring that users are never sold a ticket for a trip that is physically impossible to make.
await db.transaction(async (trx) => {
// 1. Lock seat (Flush Left)
const seat = await trx('seats')
.where('id', seatId)
.forUpdate()
.first();
if (seat.is_booked) throw 'Taken';
// 2. Confirm booking
await trx('bookings').insert({ user });
});
Stopping the "Double-Book" Nightmare
In transport apps, the worst scenario is two people booking the last seat at the exact same second. This is called a "Race Condition," and it creates angry customers.
I fixed this by using Database Locking. Basically, the moment a user clicks "Book," my code locks that specific seat row in the database. Anyone else trying to book it 1 millisecond later gets blocked until the first transaction finishes.
My Role & Agile Process
As the Lead Developer and proxy Product Owner, I managed the end-to-end delivery of this booking system. We operated in 2-week Agile sprint cycles, focusing first on a Minimum Viable Product (MVP) that handled core bookings before scaling up to the Admin Portal.
A key part of my role was stakeholder alignment - translating the operational needs of the transit managers into technical user stories in Jira, ensuring the final product directly solved their daily bottlenecks.
Architecting for Reliability
Atomic Data Integrity & Security
Implemented transaction-safe operations and utilized AWS Security Groups to isolate the RDS database, ensuring it only accepts traffic from the EC2 application server.
Asynchronous Logic Handling
Developed robust verification logic to handle asynchronous payment confirmations, ensuring the database only updates once a 100% verified Stripe handshake is completed.
Production Lifecycle
Overseeing the full engineering lifecycle - from local development and API testing to cloud deployment via Elastic Beanstalk and managed decommissioning.