{"id":26657289,"url":"https://github.com/crowdsalat/spotify-personal-dashboard","last_synced_at":"2026-04-15T18:31:24.195Z","repository":{"id":46848582,"uuid":"255550328","full_name":"CrowdSalat/spotify-personal-dashboard","owner":"CrowdSalat","description":"Dashboard for showing and clustering currently followed artists on spotify.","archived":false,"fork":false,"pushed_at":"2022-12-08T09:33:48.000Z","size":58,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T08:19:33.177Z","etag":null,"topics":["django","docker","docker-compose","drone-ci","spotify","virtualenv"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CrowdSalat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-14T08:17:19.000Z","updated_at":"2021-05-15T07:11:59.000Z","dependencies_parsed_at":"2023-01-25T00:30:13.466Z","dependency_job_id":null,"html_url":"https://github.com/CrowdSalat/spotify-personal-dashboard","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/CrowdSalat/spotify-personal-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrowdSalat%2Fspotify-personal-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrowdSalat%2Fspotify-personal-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrowdSalat%2Fspotify-personal-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrowdSalat%2Fspotify-personal-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrowdSalat","download_url":"https://codeload.github.com/CrowdSalat/spotify-personal-dashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrowdSalat%2Fspotify-personal-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31854635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","docker","docker-compose","drone-ci","spotify","virtualenv"],"created_at":"2025-03-25T08:19:36.653Z","updated_at":"2026-04-15T18:31:24.157Z","avatar_url":"https://github.com/CrowdSalat.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# spotify-personal-dashboard\n\n[![Build Status](https://droneci.weyrich.dev/api/badges/CrowdSalat/spotify-personal-dashboard/status.svg)](https://droneci.weyrich.dev/CrowdSalat/spotify-personal-dashboard)\n\nDashboard for showing and clustering currently followed albums on spotify.\n\n## TODO\n\n- nicer cards and layouts via css\n- better routing with exception handling\n- more than 20 resutls maybe via paging\n- searching and filtering\n\n## docker\n\nBefore you run the image on your computer you need to create a client key at spotify like described in [authentication overview](## authentication overview]\n\n- Run with docker: `docker run -d --name spotidash -p 8000:8000 -e SPOTIFY_CLIENT_ID=\u003c\u003e -e SPOTIFY_SECRET_CLIENT_ID=\u003c\u003e crowdsalat/spotidash`\n- Or with compose: add the spotify variables in the docker-compose file and run `docker-compose up`\n\nYou may also want to overwrite the host part of SPOTIFY_CALLBACK_URL. It defaults to localhost:8000/dashboard/albums  \n\n## production configuration\n\n### server\n\nThis projekt uses [gunicorn](https://gunicorn.org/) as WSGI http server. Alternative servers are listed [here](https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/). To check whether your application is production ready read [this article](https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/) or run `python manage.py check --deploy` for a subset of the recommended checks.\n\nTo start a gunicorn server which serves the django application run `gunicorn config.wsgi`. By default it will be reachable under [http://localhost:8000]. You can run '`gunicorn \u003cproject_name\u003e.wsgi`', because the `startproject` of django generates a wsgi.py file in the project folder.\n\nThis app uses the [whitenoise](http://whitenoise.evans.io/en/stable/) library to serve static files directly via the WSGI Server instead of serving them via a dedicated webserver.  In order to work a wrapper was added in the wsgi python file and in the settings.py a middleware was added as well a the variables STATIC_ROOT and STATIC_URL were added. See commit 1ec48f2fa76abcae8a44eb2620eaebfbc58a04e6.\n\n## development\n\n### run\n\n- activate environment: `source env/bin/activate`\n- start django development server on 8000: `python manage.py runserver`\n\n### requirements\n\nyou need:\n\n1. python 3\n2. pip3 \n3. modules defined in requirements.txt\n\n### update packages\n\n- activate virtualenv `source env/bin/activate`\n- install new packages via `pip install \u003cpackageName\u003e` and afterwards save it in requirements.txt `pip3 freeze \u003e requirements.txt`\n\n### install (one time)\n\n1. (optional) install pip3 if not present: `sudo apt-get install python3-pip` \n2. (optional) install virtualenv if not present: `sudo pip3 install virtualenv` (without sudo it wont be on the path)\n3. checkout repo and navigate inside it: `git clone https://github.com/CrowdSalat/spotify-personal-dashboard.git \u0026\u0026 cd ./spotify-personal-dashboard` *(you may want to use ssh git url instead of the given https)*\n4. Create virtualenv in root of this repo: `virtualenv env` (env is just the name)\n5. Activate virtualenv: `source env/bin/activate`\n6. Install python packages inside of the virtualenv: `pip3 install -r requirements.txt`\n\n## authentication overview\n\nsteps:\n\n1. [Create a client key](https://developer.spotify.com/documentation/general/guides/app-settings/). After creating you need to edit the [new client](https://developer.spotify.com/dashboard/applications)) and add a redirect uri.\n2. Get new oauth2 access token with the [scopes](https://developer.spotify.com/documentation/general/guides/scopes/#user-read-private) you need.\n   \n- The spotify [developer dashboard](https://developer.spotify.com/dashboard/login) for managing your api keys.\n- oauth python clients:\n  - [python 2.7 example](https://developer.byu.edu/docs/consume-api/use-api/oauth-20/oauth-20-python-sample-code) \n  - [python 3 example for spotify](https://gist.github.com/CrowdSalat/770bb1b5a1a8c892b37b7fd940a8e133)\n \n```\nAuth URL: https://accounts.spotify.com/authorize\nAccess Token URL: https://accounts.spotify.com/api/token\nRedirect URI: {{callback_uri}}\nClient ID: {{client_id}}\nClient Secret: {{client_secret}}\nScope: playlist-read-private playlist-read-collaborative user-library-read user-follow-read user-top-read\nGrant Type: Authorization Code\n```\n\n## django\n\n- django was scaffolded with commands:  \n  - `django-admin startproject config` create django project named config\n  - `python manage.py startapp dashboard` create django app inside of django porject named config\n  - `python manage.py migrate` created the standard database tables for django. Needed for session.\n- django docs:\n  - [official starting django tutorial](https://docs.djangoproject.com/en/3.0/intro/tutorial01/)\n  - [how to handle django project with one django app](https://learndjango.com/tutorials/django-best-practices-projects-vs-apps)\n\n## postman example\n\nThe project includes a postman project to explore the spotify api. In order to work:\n\n1. import the spotify.postman_collection.json and the spotify.postman_environment.json files into postman\n2. edit the spotify enviroment in postman so it includes your client_id and client_secret [see](#authentication)\n3. under security generate a new oauth2 token and use it.\n\n[Full guide](https://blog.postman.com/2016/11/09/generate-spotify-playlists-using-a-postman-collection/) from the official postman site explains how to configure a project in order to work with spotify api. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdsalat%2Fspotify-personal-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrowdsalat%2Fspotify-personal-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdsalat%2Fspotify-personal-dashboard/lists"}