Skip to content
Smart playlists for Spotify! Stop relying on fancy pants algorithms to organize your library and instead build playlists the way you want.
CSS Ruby HTML JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Autofocus textarea Feb 22, 2020
bin Init Jun 11, 2019
config Feedback widget Feb 22, 2020
db Add default of 0 to plays so play count ordering works properly Feb 20, 2020
lib Select from artists you follow and set releative release dates Feb 20, 2020
log Init Jun 11, 2019
public Init Jun 11, 2019
storage Init Jun 11, 2019
vendor Init Jun 11, 2019
.gitignore Styling Jun 13, 2019
.ruby-version Ruby version update Jul 1, 2019
Gemfile Feedback widget Feb 22, 2020
Gemfile.lock Feedback widget Feb 22, 2020
LICENSE Create LICENSE Jun 15, 2019
Procfile Sidekiq cleanup Jun 16, 2019 Line break Feb 7, 2020
Rakefile Init Jun 11, 2019 Init Jun 11, 2019
package.json Renamed some things Jun 14, 2019


I (@Shpigford) have been a longtime iTunes user and, despite its shortcomings, the ability to build complex, dynamic playlists has yet to be matched by the other streaming services.

I desperately want that ability in Spotify, so PLYLST is my attempt at building the thing I think it's missing most: that ability to put together dynamic playlists based on many different attributes.


The codebase is vanilla Rails, Sidekiq w/ Redis, Puma, and Postgres. Quite a simple setup.

How to start

1. You'll need to pull down the repo locally. You can use GitHub's "Clone or download" button to make that happen.

2. Then, add a config file to config/application.yml with Spotify OAuth keys. See below on how to get setup and get keys for Spotify.

spotify_key: KEY
spotify_secret: SECRET


You'll need a free Developer account and create your own app, which is free:

Make sure to set the Redirect URI to http://localhost:5000/users/auth/spotify/callback

These will get you the necessary keys for the app to fully function.


If you'd like to pull in lyrics for lyric-based rules, you can create an API key here:

The "Client Access Token" is the key you want. Genius is only required if you want to build/test rules around lyrics.

3. In the command line, you'll then run the following to set up gems and the database...

$ bin/setup # Installs the necessary gems and sets up the database

4. Finally, start the server (also in the command line)!

$ foreman start # starts webserver and background jobs

If you don't already have foreman installed, you can install it with gem install foreman


It's still very early days for this so your mileage will vary here and lots of things will break.

But almost any contribution will be beneficial at this point.

If you've got an improvement, just send in a pull request. If you've got feature ideas, simply open a new issues!


One area that can always use some additional perspective is performance.

You can see what the current painpoints are on Skylight.

Slow web requests:
Slow worker requests:

License & Copyright

Released under the MIT license, see the LICENSE file. Copyright (c) Sabotage Media LLC.

You can’t perform that action at this time.