Skip to content

My first Capstone in Springboard's Software Engineering Bootcamp. Built with Python, Flask, SASS, and a touch of JavaScript.

Notifications You must be signed in to change notification settings

booshja/SetPlaylist-Python

Repository files navigation

README - SetPlaylist

About

SetPlaylist ( Deployed HERE ) is a web app that connects to your Spotify account and enables you to create playlists based off setlists of the artist's live performances. The artist's upcoming shows (if any) are also displayed on the artist's page.


Local Usage


ENVs:

This app uses the following environmental variables that you will need in order to run the app

ENV Value
DATABASE_URI Postgres URI
CURR_USER_KEY Value referencing the current user for session
SECRET_KEY Flask secret key
SETLIST_FM_API_KEY API Key from setlistfm
SETLIST_FM_BASE_URL Base URL for setlistfm's API
BIT_APP_ID Bandsintown API key
BANDSINTOWN_BASE_URL Base URL for Bandsintown's API
SPOTIFY_CLIENT_ID App-specific Client ID from Spotify's Developer Tools
SPOTIFY_CLIENT_SECRET App-specific Client Secret from Spotify's Developer Tools
SPOTIFY_BASE_URL Base URL for Spotify's web API
SPOTIFY_REDIRECT_URI URL for spotify to redirect back to from user login

Testing:

In order to run the tests for this project locally, you will need to comment out the DATABASE_URI ENV so the app defaults to the testing database, as well as replace the following second block of code in app.py with the first. This app uses PostgreSQL databases, the testing db set up with the name setplaylist_test


Heroku Deployment Changes:

In order to deploy through Heroku and use their PostgreSQL connection, this line of code:

app.config["SQLALCHEMY_DATABASE_URI"] = os.environ.get('DATABASE_URI', 'postgresql:///setplaylist_test')

Has been replaced with this:

uri = os.getenv("DATABASE_URL")
if uri.startswith("postgres://"):
    uri = uri.replace("postgres://", "postgresql://", 1)

app.config["SQLALCHEMY_DATABASE_URI"] = uri

This deals with the issue of Heroku using the prefix "postgres:", whereas PostgreSQL has stopped supporting this prefix, now only using "postgresql:" exclusively.


Formatting/Linting/Pre-Commit Hooks:

This project uses pre-commit hooks with isort, black, and flake8


Features:

Setlist Search: In order to be able to find the setlist you'd like as a playlist, you need to search for it. The original plan (and long-term goal) was to allow users to search through all the artist's setlists with filtering functionality, but time constraints did not allow for this in its inital release form, and will be updated later on at some point. At this time, the artist's most recent 20 (or less) are displayed.

Spotify Connection: This allows the app to create a playlist and add songs to it within your Spotify account. This is an integral part of the idea of this app. Long-term goals include managing playlists- seeing the user's total list of playlists, ability to edit/delete them as well.

Upcoming Shows: This app features an artist's upcoming shows listed on their band display page. This feature was implemented because live shows are a centerpiece of this app, so upcoming shows are something the user would like to know.


APIs:

  1. Setlist.fm API
    • Setlists from a band search results
    • Specific setlist data
  2. Spotify Web API
    • Band search results
    • Account authorization:
      • Create/edit playlists
      • User's spotify ID
    • Creating a new playlist and adding songs to it
    • Band and Song Metadata
  3. Bandsintown API
    • Upcoming shows for artist

Tech Stack:


Support

Reach out to me at the following places:


Copyright © Jacob Andes, 2021

About

My first Capstone in Springboard's Software Engineering Bootcamp. Built with Python, Flask, SASS, and a touch of JavaScript.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published