Phish.in is an open source archive of live Phish audience recordings.
Ruby on Rails and Grape API wrap a PostgreSQL database on the backend. There's a web frontend written in React for browsing and playing audio content as well as a JSON API for accessing content programmatically.
All audio is provided in MP3 format; more formats and sources may be made available at a later time. Files are served directly from the web server and cached via CloudFlare CDN.
Join the Discord to discuss content and development.
Install Docker
Clone the repo to your local machine
Download the Fixtures Pack and unzip it. This file contains a full database export (updated May 2024) minus users and API keys. It also includes MP3 audio and PNG waveform attachments for the last Baker's Dozen show, which should be browsable and playable via localhost:3000/2017-08-06
once the local server is running. Additionally it includes MP3s/notes for 2018-12-28 for testing the rails shows:import
task.
# Copy SQL dump into PG container and run it
docker cp /path/to/phishin.sql phishin-pg-1:/docker-entrypoint-initdb.d/dump.sql
docker exec -u postgres phishin-pg-1 psql phishin postgres -f docker-entrypoint-initdb.d/dump.sql
Create a folder named content
in the local project folder. Place the tracks
and import
folders from the Fixtures Pack inside. Symlink the tracks/audio_files
folder as audio
in your public folder: ln -s ./content/tracks/audio_files public/audio
. If you run Rails outside Docker, set APP_CONTENT_PATH
in .env
as the absolute path to your content
folder.
To use audio and waveform images from production while developing locally, set PRODUCTION_CONTENT=true
in .env
.
If you want to run the Postgres database in Docker and develop the app natively (recommended), you can spin it up like this:
make services
bundle
bundle exec rails s
If you are on a Mac ARM and the ruby-audio
gem fails to install, try the following:
brew install libsndfile
gem install ruby-audio -- --with-sndfile-dir=/opt/homebrew/opt/libsndfile
Alternatively, if you prefer to develop completely in Docker, build and start the containers like this:
make up
overmind
or foreman
to run Procfile.dev
. Alternatively, you can manually run these commands in separate terminals:bin/shakapacker-dev-server
SERVER_BUNDLE_ONLY=yes bin/shakapacker --watch
http://localhost:3000/2017-08-06
. You should be able to view and play the full show.To run the specs in Docker:
make spec
To run the specs natively:
make services
bundle exec rails db:setup RAILS_ENV=test
bundle exec rspec
The content import process uses the Phish.net API for setlists. You must first obtain an API key from them and assign it to the environment variable PNET_API_KEY
in .env
.
If running the Rails app natively, you may need to install ffmpeg
.
To 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):
bundle exec rails shows:import
Use the interactive CLI to finish the import process then go to http://localhost:3000/<date>
to verify the import.
Forked with permission in 2012 from StreamPhish by Jeff Lang.
Layout and graphic design by Mark Craig.
Software and content maintained by Justin Craig-Kuhn.