{"id":14069216,"url":"https://github.com/jcraigk/phishin","last_synced_at":"2025-07-30T05:31:51.581Z","repository":{"id":35932529,"uuid":"14325948","full_name":"jcraigk/phishin","owner":"jcraigk","description":"An archive of live Phish audio","archived":false,"fork":false,"pushed_at":"2024-10-29T05:39:33.000Z","size":4790,"stargazers_count":68,"open_issues_count":11,"forks_count":10,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-10-29T23:02:53.204Z","etag":null,"topics":["music-library","phish","rails","soundmanager2"],"latest_commit_sha":null,"homepage":"http://phish.in","language":"Ruby","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/jcraigk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-11-12T07:55:10.000Z","updated_at":"2024-10-29T05:39:37.000Z","dependencies_parsed_at":"2023-10-16T12:13:07.393Z","dependency_job_id":"ec078133-6180-4e46-bfd8-de9efbe7ab9e","html_url":"https://github.com/jcraigk/phishin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcraigk%2Fphishin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcraigk%2Fphishin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcraigk%2Fphishin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcraigk%2Fphishin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcraigk","download_url":"https://codeload.github.com/jcraigk/phishin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228092181,"owners_count":17868149,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["music-library","phish","rails","soundmanager2"],"created_at":"2024-08-13T07:06:43.386Z","updated_at":"2025-07-30T05:31:51.571Z","avatar_url":"https://github.com/jcraigk.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"![Phish.in Logo](app/javascript/images/logo-full.png)\n\nPhish.in is an open source archive of live Phish audience recordings.\n\nRuby on Rails and Grape API wrap a PostgreSQL database on the backend. There's a [web frontend](https://phish.in) written in React for browsing and playing audio content as well as a [JSON API](https://petstore.swagger.io/?url=https%3A%2F%2Fphish.in/api/v2/swagger_doc) for accessing content programmatically.\n\nAll audio is provided in MP3 format. More formats and sources may be made available at a later time. Assets including audio MP3s, waveform PNGs, and album art JPEGs are served directly from the web server and cached via CloudFlare CDN.\n\nJoin the [Discord](https://discord.gg/KZWFsNN) to discuss content and development or install the [Discord Bot](https://github.com/jcraigk/phishin-discord) to query setlists and play music in voice channels.\n\n\n## Developer Setup\n\n1. Install [Docker](https://www.docker.com/)\n\n2. Clone the repo to your local machine\n3. Create a `.env` file at the root of the repository\n4. Run `make services`\n\n5. Download the [Development SQL File](https://www.dropbox.com/scl/fi/6zv4bzxxcjgv3ouv8d3ek/phishin-dev.sql?rlkey=4trafp2vxcgc1iuuq36yhl9gc) and import it:\n\n```bash\n# Copy SQL dump into PG container and run it\n$ docker cp /path/to/phishin-dev.sql phishin-pg-1:/docker-entrypoint-initdb.d/data.sql\n$ docker exec -u postgres phishin-pg-1 createdb phishin_development\n$ docker exec -u postgres phishin-pg-1 psql -d phishin_development -f docker-entrypoint-initdb.d/data.sql\n```\n\n4. To present production content locally during development, set `PRODUCTION_CONTENT=true` in your local `.env` file.\n\n5. If you want to run the Postgres database in Docker and develop the app natively (recommended), you can spin it up like this:\n\nInstall the correct ruby version:\n```bash\n$ brew install rbenv # if not already installed\n$ rbenv install 3.4.5 # or current version in `Gemfile`\n$ rbenv local 3.4.5\n```\n\nInstall dependencies:\n```bash\n$ gem install bundler foreman # if bundler and/or foreman are not already installed\n$ bundle install\n$ yarn install\n```\n\nRun the app:\n```bash\n$ make dev\n```\n\nIf you are on a Mac ARM and the `ruby-audio` gem fails to install, see the Troubleshooting section below.\n\nAlternatively, if you prefer to develop completely in Docker, build and start the containers like this:\n\n```bash\n$ make up\n```\n\n## Testing\n\nTo run the specs in Docker:\n\n```bash\n$ make spec\n```\n\nTo run the specs natively:\n\n```bash\n$ make services\n$ bundle exec rails db:setup RAILS_ENV=test\n$ bundle exec rspec\n```\n\n## Importing Content\n\nThe content import process uses the [Phish.net API](https://docs.phish.net/) for setlists. You must first obtain an API key from them and assign it to the environment variable `PNET_API_KEY` in `.env`.\n\nIf running the Rails app natively, you may need to install `ffmpeg`.\n\nTo import a new show or replace an existing one, name the MP3s according to the import format (`I 01 Harry Hood.mp3`) and place them in a folder named by date (`2018-08-12`). Place this folder in `./content/import` and run the following command (`make bash` first if you use Docker):\n\n```bash\nbundle exec rails shows:import\n```\n\nUse the interactive CLI to finish the import process then set `PRODUCTION_CONTENT=false`, restart the server, and visit `http://localhost:3000/\u003cdate\u003e` to verify the import.\n\n\n## Troubleshooting (Appendix)\n\n### Postgres Connection Issues\n- If you get a `NoDatabaseError` or `connection to server at \"localhost\" failed`, make sure:\n  - No other Postgres server is running on your Mac (use `brew services list`, `ps aux | grep postgres`, or `lsof -i :5432`).\n  - Stop any native Postgres with `brew services stop postgresql` or by quitting Postgres.app.\n  - After stopping, restart your Docker Postgres:\n    ```sh\n    make services\n    ```\n  - You should see your database with:\n    ```sh\n    psql -h localhost -U postgres -l\n    ```\n  - If you do not see `phishin_development` in the list, re-import your SQL dump as described above.\n\n### Webpack Dev Server Port Conflict\n- If you see an error like `EADDRINUSE: address already in use 127.0.0.1:3035`, run:\n  ```sh\n  lsof -i :3035\n  ```\n  and kill any stray `node` processes:\n  ```sh\n  kill -9 \u003cPID\u003e\n  ```\n\n### Mac ARM: ruby-audio Gem Installation\n- If you are on a Mac ARM and the `ruby-audio` gem fails to install, try the following:\n  ```sh\n  brew install libsndfile\n  gem install ruby-audio -- --with-sndfile-dir=/opt/homebrew/opt/libsndfile\n  ```\n\n## Contributions\n\nForked with permission in 2012 from [StreamPhish](https://github.com/jeffplang/streamphish/) by Jeff Lang.\n\nSoftware and content maintained by [Justin Craig-Kuhn](https://github.com/jcraigk).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcraigk%2Fphishin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcraigk%2Fphishin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcraigk%2Fphishin/lists"}