About this project
Phish.in is an open source archive of live Phish audience recordings. The backend combines Ruby on Rails and a Grape API over a PostgreSQL database, while a React web frontend at phish.in lets users browse and play audio. A JSON API (documented via Swagger) allows programmatic access to the content.
Audio is provided in MP3 format, with the possibility of more formats and sources later. Assets such as MP3s, waveform PNGs and album art JPEGs are served directly from the web server and cached through CloudFlare CDN. A Discord community exists for discussing content and development, and a separate Discord bot can query setlists and play music in voice channels.
Development setup relies on Docker and mise. Developers clone the repository, create a .env file from the example, run the services task, and import a provided development SQL dump into the PostgreSQL container. A PRODUCTION_CONTENT flag lets local development present production content. The app can be developed natively with Ruby version management via mise, or entirely inside Docker. Testing is done with RSpec, either in Docker or natively.
Content importing uses the Phish.net API for setlists, requiring an API key in the PNET_API_KEY environment variable. The preferred import path is a web admin panel at /admin, where an admin can import a show from archive.org or upload files, review setlist and track boundaries, and publish. A CLI batch import remains available: MP3s named in a specific format are placed in a date-named folder under ./content/import and processed with a Rails task, followed by an interactive CLI step.
The application also exposes an MCP (Model Context Protocol) endpoint at POST /mcp for AI assistant integration, with tools and widgets defined under app/mcp/. The README includes troubleshooting notes for PostgreSQL connection conflicts, a Webpack dev server port conflict, and installing the ruby-audio gem on Mac ARM.
The project was forked with permission in 2012 from StreamPhish by Jeff Lang, and is maintained by Justin Craig-Kuhn.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.