Spotify Booster is a web app that allows you to create mashups of similar sounding sections of spotify tracks.
Simply login with Spotify, hit Create New Mashup, search and select a starting track and source playlist or album, and click create.
Spotify Booster will look at the key, tempo, mode, time signature, and loudness of portions of the tracks to generate a mashup where the most similar sections are played sequentially.
The mashup will show up on the right and you can play it back from Spotfiy right in the Spotify Booster app.
- Login/Logout with Spotify
- Create Mashups
- Save and Search for Mashups
- Playback Mashup
- Search for Spotify songs, albums, playlist, and artists
- Node.js
- React.js
- Typescript
- Mocha, Chai
- SQLite
- Docker
- Spotify API access to Web Playback SDK and Web API
- Make a copy of
template.envand name it.env - Set the values in
.envto match your Spotify API configuration - Build the container
docker build --tag spotify-booster . - Start the container
Change
docker run -p 8080:8080 --env-file .env -v ./data:/app/data spotify-booster
8080:8080to8080:<Your Desired Port>to have app listen on a different port - App is now accessible at
http://localhost:8080
- Note: Music playback requires a Spotify Premium account
- Node.js (Tested with Node 18)
- In the
/frontenddirectory, run:
npm install
-
Open
config/spotify_config.jsand fill in theclientIdandclientSecproperties, they should be your spotify client id and spotify client secret respectively. -
Open
config/backend_config.jsand setbaseURLto the base url of where your backend server is hosted -
Then build the project
npm run build
- In the
/backenddirectory, run:
npm install
- Then build the project
npm run build
-
Make a copy of the
template.envfile and name it.env. Then fill in the settings.APP_ENVshould be set to eitherDevelopmentorProductionSPOTIFY_CLIENT_ID,SPOTIFY_CLIENT_SECRET, andSPOTIFY_REDIRECT_URLshould be set to your spotify api key valuesWEB_PORTshould be set the desired port for the backend web server to be listening onWEB_SATIC_PATHshould be set to the path to the frontend build directory,WEB_INDEX_PATHto whereindex.htmlisDATABASE_PATHpoints to where the database is/or should be created atLOG_FILE_DIRECTORYpoints to the directory where logs should be stored
-
Finally, to start the backend web server, run:
npm start
Alexander Eilert: Frontend (Frontend Design, Song Playback)
Bennett Wu: Backend (SQLite Interface, Mashup Generation, API Endpoints)
Porter Shawer: Frontend (Song/Artist/Album/Playlist/Mashup Search, Song and Mashup Playback)
Tommy Liu: Frontend (Spotify Login/Authentication, Playback Progress Display)