{"id":20246210,"url":"https://github.com/ruarfff/spodcast","last_synced_at":"2026-04-19T07:36:18.561Z","repository":{"id":52942394,"uuid":"338465372","full_name":"ruarfff/spodcast","owner":"ruarfff","description":"A UI for managing your Spotify podcasts","archived":false,"fork":false,"pushed_at":"2022-04-24T18:09:21.000Z","size":4481,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-02T17:05:25.345Z","etag":null,"topics":["firebase","remix"],"latest_commit_sha":null,"homepage":"https://spodcast-cd96f.web.app/","language":"TypeScript","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/ruarfff.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}},"created_at":"2021-02-13T00:26:06.000Z","updated_at":"2022-04-24T18:09:24.000Z","dependencies_parsed_at":"2022-08-26T20:56:07.613Z","dependency_job_id":null,"html_url":"https://github.com/ruarfff/spodcast","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ruarfff/spodcast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruarfff%2Fspodcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruarfff%2Fspodcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruarfff%2Fspodcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruarfff%2Fspodcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruarfff","download_url":"https://codeload.github.com/ruarfff/spodcast/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruarfff%2Fspodcast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31999171,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["firebase","remix"],"created_at":"2024-11-14T09:27:50.150Z","updated_at":"2026-04-19T07:36:18.533Z","avatar_url":"https://github.com/ruarfff.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spodcast\n\nSpotify podcast manager because the Spotify desktop podcast management experience is not amazing.\n\n## Development\n\nBecause I like to spend money I am using [remix](https://remix.run). This unfortunately means you need to have a remix license to build this and you need to set your remix registry token in an environment variable called `REMIX_REGISTRY_TOKEN`.\n\nThen, install all dependencies using `npm`:\n\n```sh\n$ npm install\n```\n\nYour `@remix-run/*` dependencies will come from the Remix package registry.\n\nOnce everything is installed, start the app in development mode with the following command:\n\n```sh\n$ npm start\n```\n\nThis project uses [firebase](https://firebase.google.com/) fairly heavily and when you run it locally you will end up starting a bunch of firebase emulators.\n\n\u003e As I am writing this I am thinking about the fact that I have not set this up very well. It's very clunky. I will hopefully improve this and document it all better.\n\nLocally I put it in `.creds/` which is gitignored.\n\n## Configuration\n\n### Service Account\n\n- Get a service account in firebase: \u003chttps://firebase.google.com/docs/admin/setup#add_firebase_to_your_app\u003e\n- Store it in a file in the repo called `.creds/serviceAccountKey.json`\n\nThat file is ignored by git. Locally this can be used  to do asmin stuff in firebase.\n\nIn prod we load it from a config.\n\n\n\n### Spotify\n\nYou need to setup a Spotify app at \u003chttps://developer.spotify.com/\u003e.\n\nIn the [applications dashboard](https://developer.spotify.com/dashboard/applications) you can find the client id, the client secret and you can configured allowed redirect URLs. You will need one redirect for local development i.e. \u003chttp://localhost:5000/callback\u003e. You will need another for your production url. Set those values and environment variables:\n\n```bash\nexport SPODCAST_AUTH_CLIENT_ID=\"your-client-id\"\nexport SPODCAST_AUTH_CLIENT_SECRET=\"your-client-secret\"\nexport SPODCAST_AUTH_REDIRECT_URL=\"http://localhost:5000/callback\"\n```\n\nNeed these configured in firebase to work there:\n\n```bash\nfirebase functions:config:set spodcast.spotify.client=\"${SPODCAST_AUTH_CLIENT_ID}\"\n spodcast.spotify.secret=\"${SPODCAST_AUTH_CLIENT_SECRET}\" spodcast.spotify.redirect=\"https://your-firebase-url/callback\"\n```\n\n### Cookies\n\n```bash\nexport SPODCAST_SESSION_SECRET=\"your-secret\"\n```\n\n```bash\nfirebase functions:config:set spodcast.session.secret=\"${SPODCAST_SESSION_SECRET}\"\n```\n\n### Firebase locally\n\nThis project will automatically load the firebase config when deployed. To control the firebase config locally you need to add the firebase configuration values to these environment variables.\n\n```bash\nexport SPODCAST_FB_API_KEY=\"\"\nexport SPODCAST_FB_AUTH_DOMAIN=\"\"\nexport SPODCAST_PROJECT_ID=\"\"\nexport SPODCAST_STORAGE_BUCKET=\"\"\nexport SPODCAST_MESSAGING_SENDER=\"\"\nexport SPODCAST_APP_ID=\"\"\nexport SPODCAST_MEASUREMENT_ID=\"\"\n```\n\n## Documentation\n\nDetailed documentation for Remix [is available at remix.run](https://remix.run/dashboard/docs).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruarfff%2Fspodcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruarfff%2Fspodcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruarfff%2Fspodcast/lists"}