What BandPilot needed
Cover bands run the night off a sheet of paper. The set gets written in the afternoon, the room turns out to want something else, and the change happens by shouting across a stage between songs. Most apps that claim to fix this are either a notes file with a logo on it or a rehearsal tool that assumes you are a touring act with a manager.
The request problem is the interesting one. A request from the crowd is good for the room and bad for the set, because saying yes means somebody has to know what key it is in, whether everyone actually knows it, and what it does to the next forty minutes.
How we built it
BandPilot is a React and TypeScript app on Supabase, with Postgres row-level security handling isolation so one band cannot read another band's material. Sets are drag-and-drop. The song library is shared across the band, so what one member fixes at home, everyone has at soundcheck.
Requests arrive from the room into a queue the band controls, instead of a shout across the stage. Accessibility is tested in continuous integration with axe-core and the end-to-end suite runs in Playwright, because the thing most likely to break is the thing you are operating on a dark stage with one hand.
How it turned out
BandPilot is live at bandpilotapp.com and in the hands of working bands, including the one that prompted it. The free tier is unlimited songs and three setlists, with no card.
The current work is proven backups, a security pass over the payment path, and the database migrations that have to land before anyone is charged a dollar. Software that holds a band's material has to be boring in the right places first.