{"id":34140769,"url":"https://github.com/festwrap/festwrap-server","last_synced_at":"2026-03-09T21:02:53.626Z","repository":{"id":249624683,"uuid":"794521173","full_name":"festwrap/festwrap-server","owner":"festwrap","description":"Backend for the Festwrap webapp. Automates the generation of setlists for your upcoming live shows.","archived":false,"fork":false,"pushed_at":"2026-02-17T07:54:15.000Z","size":718,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-17T12:56:16.353Z","etag":null,"topics":["backend","concerts","festivals","golang","music","playlists"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/festwrap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-01T11:18:52.000Z","updated_at":"2026-02-17T07:54:18.000Z","dependencies_parsed_at":"2024-10-16T18:07:02.219Z","dependency_job_id":"650bb75e-986a-490b-adea-7a7d8c5a6673","html_url":"https://github.com/festwrap/festwrap-server","commit_stats":null,"previous_names":["danielmoradc/festwrap","danielmoradc/festwrap-server"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/festwrap/festwrap-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/festwrap%2Ffestwrap-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/festwrap%2Ffestwrap-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/festwrap%2Ffestwrap-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/festwrap%2Ffestwrap-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/festwrap","download_url":"https://codeload.github.com/festwrap/festwrap-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/festwrap%2Ffestwrap-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30312130,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T20:05:46.299Z","status":"ssl_error","status_checked_at":"2026-03-09T19:57:04.425Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["backend","concerts","festivals","golang","music","playlists"],"created_at":"2025-12-15T02:55:44.601Z","updated_at":"2026-03-09T21:02:53.614Z","avatar_url":"https://github.com/festwrap.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\n\nThe purpose of this application is to facilitate the creation of customized playlist using Golang.\n\nWe are relying on Spotify for storing the playlists and Setlistfm for retrieving the top songs from each artist, though we can support other services in the future.\n\nThe UI is located in [this other repository](https://github.com/DanielMoraDC/festwrap-ui).\n\n# Local development\n\nMake sure Go 1.24+, Make and Docker v2 are available in your system.\n\nWe use pre-commit for static code analysis. Make sure hooks are installed (i.e. `brew install pre-commit` in MacOS) before contributing:\n\n```shell\nmake pre-commit-install\n```\n\n# Testing the code\n\nYou can run the tests by typing:\n\n```shell\nmake run-tests\n```\n\n# Running the code\n\n## First time settings\n\nBefore you start, make sure you have added the corresponding required variables in `.env`. Make a copy from the template:\n\n```shell\ncp .env.template .env\n```\n\nHere are the variables you will need to fill:\n\n- `SPOTIFY_CLIENT_ID`: Your Spotify app client id. Follow [these instructions](https://developer.spotify.com/documentation/web-api/tutorials/getting-started#create-an-app) to create your app.\n- `SPOTIFY_CLIENT_SECRET`: Your Spotify app client secret. See previous variable for instructions.\n- `SPOTIFY_REFRESH_TOKEN`: Spotify refresh token. See [these instructions](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) on how to obtain it.\n- `FESTWRAP_SETLISTFM_APIKEY`: Your Setlistfm API key. It can be requested [here](https://api.setlist.fm/docs/1.0/index.html) for free for non-commercial projects as this one.\n\n\n### Run the app\n\nTo run the API locally, you can type:\n\n```shell\nmake run-local-server\n```\n\n### Run the app container\n\nStart the container by typing:\n\n```shell\nmake run-server\n```\n\nTo stop the container, run in a separate terminal:\n\n```shell\nmake stop-server\n```\n\n# Supporting services\n\nRunning the app locally will also start a set of supporting services/jobs:\n- `pubsub`: local fake of Google Pubsub.\n- `pubsub-consumer`: consumes the messages published into the topics.\n- `pubsub-init`: creates the topics and subscriber group.\n\nIn order to see what is being published into pubsub, you can consult the `pubsub-consumer` logs in a separate terminal (note that it takes some time to start):\n\n```shell\ndocker logs integration-pubsub-consumer-1 -f\n```\n\n## Calling the API\n\n### Artists search\n\n```shell\ncurl --location 'http://localhost:8080/artists/search?name=\u003cartist\u003e'\n```\n\n### Add songs\n\nCreating a new playlist with setlists for some artists:\n\n```shell\ncurl -X POST --location 'http://localhost:8080/playlists' \\\n      --header 'Content-Type: application/json' \\\n      --data '{\"artists\":[{\"name\": \"\u003cartist_name\u003e\"}],\"playlist\":{\"name\":\"\u003cplaylist_name\u003e\"}}'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffestwrap%2Ffestwrap-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffestwrap%2Ffestwrap-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffestwrap%2Ffestwrap-server/lists"}