MongoTickets

Two customer surfaces, one pool of tickets. I debugged the gap where both of them thought a seat was free.

MongoTickets served 5K+ users from a web frontend and a native Android client. I owned the Spring Boot API between them. Transactions went through JPA and Hibernate on MySQL. Inventory updates pushed over WebSockets so both clients learned about a sale at the same time.

Problem

The bug was consistency, not a missing screen. Polling left a window where the site and the phone both sold the same ticket. Each client had been integrated separately, and the data flow between them was where it broke.

Process

I traced a sale across both integrations instead of fixing whichever client reported it. One REST contract for the operations both needed. The commit and the WebSocket broadcast describe the same transaction. The Android app stayed native Kotlin. It did not become a copy of the website.

Solution

Results

Justin Moran · Forward Deployed Engineer · Chicago, IL · LinkedIn · GitHub · Resume (PDF)