Learn more about the developer: www.linkedin.com/in/michelletdicks
One Minute Getaway is a fullstack web application intended to allow users to take a one minute vacation. A user can enter a song of their choice, and with the integration of the 7digital API, the song is determined, and a preview of the song is obtained. Next, the user can select any location across the globe. With the integration of the Google Maps API, using the autocomplete feature, the user does not have to worry about spelling errors. Once the location is selected, the Places Library within the Google Maps API will obtain a picture of that location. The preview of the song will play, while a picture of the location is displayed, allowing the user to have a brief one minute getaway.
The user then has the option to purchase the song from 7digital, as the music is the central point of the experience. Alternately, a user can replay the getaway, or go to Expedia and purchase travel. A user can also login using a SSO through the use of the Auth0 API, which is configured to allow Facebook, Twitter and Google based logins, or the user can create a seperate login for the app. Once logged in, the user can save the getaway, see a list of prior getaways and replay a prior getaway.
Python, Flask, PostGreSQL, SQLAlchemy, HTML, CSS, Bootstrap, Javascript, 7digital API, Google Maps API (Places Library), Auth0 API
(Dependences are contained in requirements.txt)
Currently, 82% of the app has been tested, including 100% of the actions involving the database.
The 7digital library contains data for over 30 million songs, and was previously used to power song purchases for the Spotify app. The primary reason for the selection of the 7digital API is that it is well documented and contains previews for the majority of songs available. The first API call is to search for the song, and the second API call is to obtain a song preview URL. All calls to the 7digital API are done from the backend, in Python, for speed. Only the track id and song name are stored in the PostGreSQL database, no other song information is stored.
The Google Maps API was selected because the autocomplete feature provides active assistance to users, which enhances the UI/UX experience. The final name of the location is the Google Maps name for the location, which leads to better data quality in the PostGreSQL database if a user chooses to save a Getaway. Lastly, the Places Library contains up to ten pictures for each location, which guarantees a result in most instances and prevents having to use another API to obtain a picture. The first API call allows for the use of the autocomplete feature and selection of the location name, and the second API call is to obtain the URL for the picture of the location. All calls to the Google Maps API are done from the frontend, in JavaScript, for user interactivity.
The Auth0 API was selected because it manages the entire login function and is customizeable. Users expect to use social media credentials to login to an application. Auth0 allows developers to choose which social media providers to integrate with, and will obtain user information once a user logs in that can then be stored in the PostGreSQL database. It can also be configured to allow for a login to the web app itself. Auth0 sends an automatic welcome email that can be customized, provides a lost password function, and updates for any changes that social media platforms make to their login API's. It also manages security, which is always a consideration for a login function. Multiple calls are made to the Auth0 API.
Backend components for using the 7digital API.
Frontend components for using the Google maps API.
SQLAlchemy Integration with PostgreSQL, object oriented database model.
All queries, storage and other interactions with the PostgreSQL database.
The core of the app, showing all Flask routes.
The folder contains three subfolders: (1) img: images used by the app, but not location images from Google; (2) css: external css files for various pages for the app; (3) js: javascript file for certain functionality for the app.
The folder contains all web pages used for the app.
Contains the tests performed on the app.
I want to look at the songs and locations that users have selected and predict getaways that the user might like.
Users may enjoy sharing their getaways with others using social media.
The app can be modified to provide a better user experience visually and in terms of user flow.
When more than one results is returned for a song, currently only the song name is display, update the app so that the artists name will appear next to the song.
Once a User has logged in, add a link to the login page that allows the user to create a new getaway.
While a getaway is being display, show a map with the location of the getaway.
The app is not publicly released and never will be. It is a student project for school.