Ubeen is a web app which uses the Uber API to grab your trip history and analyses that raw data into something interesting. It shows you information about your first ride, longest ride, total ride distance and time, average ride distance, the Uber products you've used, cities you've travelled in, and other lovely information! It is all laid out in a beautiful infographic format, and uses Chart.js to create some great visualisations.
This was a team effort with fellow developer and creative Paul Scanlon. He took care of the visuals and styling on the front end. I took care of the Node.js web server, APIs, data processing and infrastructure.
This is a Node.js app using the Express framework. It uses OAuth to authenticate the user through the Uber API and then requests their profile data and trip history data. The actual operation to process the data is fairly simpe - it mostly just needs to loop through all the trips returned from the API and increment counters, e.g. if a trip started at 6.32pm, increment the variable keeping tracking of trips started within 6-7pm. The whole data processing occurs in less than 100 LOC! The next problem is getting the product names from Uber (e.g. uberX, uberLUX). The endpoint used to get trip history only returns a product ID. To save hammering the Uber API, product IDs are saved in Redis, so it looks there first for product names. Then it talks to the Flikr API to get a nice topical photo for the frontend based on where you have taken trips.
Wired up with Sentry, DataDog and Google Analytics, I know exactly what's going on on the server at all times, and unit tests on the data computation class helps prevent bugs.
Behind the scenes:
- Uber API
- Flickr API