Full-Stack & Cloud Architecture Case Study

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.


AWS CLOUD LARAVEL STRIPE API FULL-STACK MYSQL

Payment Infrastructure

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.

Stripe Integration Transaction Layer: Secure API handshake and real-time payment verification.
Confirmed Admin Dashboard Operational Oversight: Live status transition from 'Pending' to 'Confirm'.
Internal Tools

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.

DevOps & Hosting

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.

AWS Infrastructure Infrastructure: Leveraging AWS EC2 and RDS for enterprise-level scalability.
Laravel Routing Logic Backend Logic: Defining secure administrative routes and middleware.
Core Algorithm

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 });
                                        });
Backend Logic

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.

MySQL Transactions Race Condition Handling Data Integrity
Product Delivery

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.

2-Week
Sprint Cycles
Mandai Express Interface
Visual Systems: A clean interface designed to simplify complex transit routing and real-time booking logistics.
SYSTEM PHILOSOPHY

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.

Enough Thinking • Let's Build