README - 3minus1/playjam GitHub Wiki

This is an internship assignment given by Furlenco

The app is built on Laravel 5.4

The app is deployed on DigitalOcean at http://139.59.27.158

PlayJam is a music aggregation website, which currently supports YouTube, Gaana, and Saavn.

Song details are fetched by the API I made on NodeJs. It's called ScrapeJam. The song URL is passed as GET request parameter to respective end-points of the ScrapeJam API. Song details are received as JSON objects, which are then parsed and stored into the database.

Briefly, PlayJam has the following feature set:

Mandatory Features

  • Facebook authentication
  • Ability to create and edit playlists
  • Ability to associate tags with playlists
  • Add songs to any playlist
  • Remove a song from any playlist
  • Share playlist with friends on Facebook
  • Play a song/playlist

Bonus Features

  • Material UI
  • Ability to figure out/scrape song metadata and display on the fronted
  • Ability to shuffle the songs in a playlist
  • Manual Autoplay, i.e. after a YouTube video gets over, the next item in the playlist starts playing automatically
  • Player Controls to skip to next song, go back to previous song, pause or play song.
  • Ability to view all the playlists which has a specific tag
  • Ability to view all the playlists created by a specific user
  • Seamless retrieval of song meta while adding a song to a playlist

Note: Only YouTube has a functional API as of now. Gaana.com's songs are loaded in a hidden iFrame, and Saavn's songs are loaded on their external website. I had applied for SoundCloud's API access, but they take upto 30 days for processing, and I still haven't got access to it. Both Saavn and SoundCloud do not allow Cross-Origin-Resource-Sharing, so iFrames cannot be used here, making it virtually impossible to play their content on an external website without possessing valid API credentials. (Gaana and Saavn don't even have APIs :P).

PS: No copyright infringement or commercial misuse is intended and this is just for educational purposes.

Tech Stack:

  • Laravel 5.4 (Php)
  • Materialize CSS
  • Jquery and Javascript
  • MySQL
  • Digital Ocean VPS
  • Version Control - Git

Citations: