Yesterday I went to a perfomance with my friend, who unfortunately forgot to buy the ticket. We spend a lot of time trying to get him a ticket on the door and ended up paying 3 times the price and being very late. I thought that there must be a user-friendly non-intrusive way to notify about your favourite artists in the area and provide with direct links to purchase the tickets in advance
What it does
It uses Spotify's API to get data about currently played artists, then it compares seeks if currently played artists is within the vacinity of user-provided location preferences and if it's a match - provides a user with a quick sleek notification with most important data about the artist performance such as the date, venue and a ticket link.
How I built it
I used node.js express server as the backend for my rest api's and then layered the requests in a logical manner. So, getting the access_token, then monitoring for incoming requests to check if the currently listened artist has changed, and if did - send requests, to get performance information for the artist from bandsintown api, then convert user's postcode into longtitude and latitude using bing's api and finally use geolib to calculate the distance and compare it with user's acceptable traveling distance. On the front end there sits two angular apps (one for main background app that makes all the requests to backend and one that fetches the data from pop up view) that communicate with each other via a shared rootscope.
Challenges I ran into
I learned that combining chrome extension with an MVC framework (and establishing a link between View and Controller for that matter) is a tedious task. Debugging was nearly impossible, due to the main application being a 'background' script which has it's own Window object meaning that whenever the extension pop up is open any messages, errors or logs are hidden by the extension pop-up scope. Also notification window turned out to be a lot less flexible in terms of styling than I anticipated.
Accomplishments that I'm proud of
I'm happy that it works. There's definitely, much to improve and refactor, but it's the minimum viable product that I was building.
What I learned
Learned a great deal about Spotify's api, refreshed my node.js backend knowledge and learned about possibilities and limitations of chrome extensions.
What's next for musicMate
I think it could be a suite to improve user experience using user-tailored preferences and data. For example next step could be analysing the user's favourite music and providing him with tailored news (new album releases, advertisement, invites). It's all about working silently in the background and giving the user data at the right time.