Inspiration

Last month, one of our team members went on holiday and stumbled across a open-air festival - which was for sure the best part of the trip. So we thought, why not flip holiday planning on its head and build a holiday around the concert, even if you don't know the artist!

What it does

The user logs in with their Spotify account, where we then query the API to get their top songs and artists of the past few months. We then look for common genres across the songs - of which we pick a few at once and run with them. We prompt Gemma to find currently touring/planning to tour artists, that matches the genres given, from a completely random country. Then, we query the ticketmaster API to find a link to one of the artist's shows, and display all the information of the trip nicely to the user. We generate 3 holiday ideas at a time, to give the user choice, which can be re-generated by pressing a button.

How we built it

The website is a Next.js project that's mainly written in Typescript. The main bulk of the holiday planning system involves API calls and Gemma prompts, which are done from within the frontend itself.

Challenges we ran into

The Spotify API has recently become very restrictive. Non-premium members cannot access the API at all, developer projects can only be accessed by a lifetime maximum of 5 people, and it is so incredibly easy to hit the rate limit. At one point, we had all created an API endpoint and rate-limited it that one of our members had to buy premium just so we could continuue coding!

Accomplishments that we're proud of

Frontend: Getting and displaying pictures of the recommended city in real-time behind the holiday's information (done by querying the Unsplash API). Backend: Creating a fully-functional analytics dashboard, powered by MongoDB that displays to the companies what holiday destinations are getting the most clicks, and what artists/destinations the system is recommending the most. This would allow us to better understand our customers, and monitor the music trends which could indicate higher tourism interest in under-travelled countries. We could use this data to determine what locations to invest in, beating the competition to new trends in tourism.

What we learned

  • How to build a multi-webpage application with Next.js.
  • The Next.js component system / The Next.js conditional rendering system.
  • How to optimise Gemma prompts and API calls - we managed to decrease the time our trip location finder system took to complete from over 40 seconds to sub 5!

What's next for bsidebreaks

  • A group mode, where a group of users are given recommendations based on their collective music taste. This would be great for friend groups!
  • The ability to look for another gig in the same city. This is useful for users who've found the city they want to visit through the site, but just don't like the artist that much!

Built With

Share this project:

Updates