A Spring Boot API for ticketing, shared by a web client and a native Android client, with live inventory.
MongoTickets served ticket inventory to a browser and a Kotlin Android app from one API. Transactions ran through JPA and Hibernate on MySQL. Inventory changes pushed over WebSockets so a seat could not sell twice in the gap between refreshes.
Two clients and one pool of inventory. Polling would have lied about availability, so the transaction and the broadcast had to describe the same sale.
I designed the REST API around the operations both clients needed, mapped the ticket model with JPA, and opened a WebSocket channel for inventory deltas. The Android client is native Kotlin, not a wrapped copy of the website, and the pipeline ran on GitLab CI.
Justin Moran · Software Engineer · Chicago, IL · LinkedIn · GitHub · Resume (PDF)