The past year of YPlan Engineering

I've recently been looking back over the last year or so of Engineering at YPlan. A year is a long time at our scale and a lot has happened so I thought I'd share the highlights. Some of this is stuff that was in progress a year ago and goes back as far as the start of last year (2015) at times. On the flip side I obviously can't say too much about what's in progress now :)

Website banner

Early last year we decided to expand into web and for the first time built a site that wasn't just an advertisement for the app. It's a React.js based site with isomorphic server side rendering and launched a little over a year ago. Since the launch we've been over the whole thing expanding functionality and tuning flows and SEO. In addition to this we've added white label and widget modes for both affiliates and partners.

Theatre website banner

We integrated with a new 3rd party theatre aggregator last year. Of our 3rd party connections this has been the most successful with the largest and fastest growing booking volume. This success was achieved despite significant differences in the data model between the two systems.

Seat Selection

Related to the new theatre integration we also developed the best per seat booking flow available anywhere. This was done on both app and web but was a particular challenge on mobile due to the limited screen size.

Basket Selection

Continuing the checkout theme we've recently implemented support for baskets (e.g. 2x Adult + 1x Child). Group tickets (e.g. Family of 4). And shared allocation where the above can all be configured to count out of the same ticket allocation.

Search and Filter input

Early last year we rolled out search and filter backed by a NoSQL index implemented with the Python library Whoosh. Further into the year in response to our growing inventory and declining page load times we rebuilt all our event caching and serving to make the search index the heart of it all. This lets it run mostly on event ID's instead of event objects dramatically improving performance by cutting down the amount of data we are handling in each request.

Ravelin

As with any non trivial e-commerce site we see fraudulent activity on our platform. Over the last year we have clamped down on this significantly, reducing the rates several fold. There have been various tooling and process changes involved in this but the most notable is our integration with Ravelin as a pre-launch partner.

Cinema Club Logo

Cinema Club was originally done as a two week proof of concept late last year. We let that proof of concept sit for a bit before deciding to develop it further this year. It's now a fully fledged product, sourcing from multiple 3rd party APIs, spanning multiple countries and with proper Devops.

Similar Events

On the data science side we've had a recommendation system for some time that has gone through several iterations. Over the last year we've branched out into event similarity for "sorry this event is sold out maybe you'd like one of these similar events" style recomendations. And most recently automated classification of customer feedback with AWS machine learning.

AWS Diagram

In Devops land over the last year we migrated all our AWS infrastructure into VPC, completely rebuilt our caching and queuing layers, migrated from MySQL 5.5 to MariaDB 10.0 and implemented automated build and test for code reviews.

QR code

And finally we've launched our 3rd app, YPlan Access. This is a barcode scanning based access control solution for our event partners. This is part of a general push to provide better tooling and support for our partners. YPlan Access is still undergoing testing but early signs are that we're crushing the competition in both speed and reliability, both of which are critical to access control.

Fireworks

Through all of this we maintained our near perfect uptime record and general cadence of releasing to production several times a day.

As you can see a lot of good work has been done over the past year and I'd like to thank everyone who contributed, I'm proud of our achievements and you should be too.