One band, not a platform
An installation belongs to a single band. No accounts spanning bands, no other band in the same database, no service in the middle that can disappear. The band owns the server, the database and the data.
Self-hosted band software
A request can be priced, agreed by contract, played and invoiced without leaving the program. Plus dates, setlists, songs, treasury, equipment and a public band page. Bandregie runs on your own server — no account with anybody, no subscription, nobody else holding your data.
PHP and a database. No framework, no build step, no dependencies — install it once and it still runs in five years.
A band of six runs on a group chat, three spreadsheets and one person who remembers everything. The answer to every question exists somewhere — you just have to know who has it and when they next look at their phone.
Every screen in Bandregie exists because somebody once typed that exact question into the chat and then waited.
An installation belongs to a single band. No accounts spanning bands, no other band in the same database, no service in the middle that can disappear. The band owns the server, the database and the data.
Not another tool to type data into. Every page answers a question that would otherwise sit in the chat — right away, and the same for everyone.
No framework to upgrade, no build step, no package lock, no third-party script. A band that installs this should still be able to run it in five years without anyone having touched it.
What someone paid for their own equipment, what they deposit, what they own — visible to them, not to the band. Whoever is not meant to see something does not simply get the button hidden: the page stays shut to them, even if they know its address. A stand-in sees the dates they were asked for and nothing else.
The screenshots show the demo data that ships with the project — a fresh installation looks like this straight away.
What promoters and fans see: upcoming shows, photos, music, contact. Band name, logo and background come from the settings. Already have a site? Switch the public page to redirect mode — the member area, the calendar feed and the legal pages stay reachable.
This is how most bands work: contract out, signed copy back, done. Date, place, playing time and fee are already on the event — the contract takes them from there and you add the wording. The party you sign with is not the hall: it is called "Town festival", it is booked through an agency two villages away, and the agency signs. Promoters are records of their own for that reason, apart from the venue. What has been sent and signed stays word for word, even when somebody edits the template later. There are deliberately no electronic signatures — signing happens on paper, and the scan goes to the event.
Worked out from your own price list instead of in your head: the first hour including setting up and packing down, further playing time, travel per kilometre, your own PA, a guest engineer. Below that the discount for the village festival, the VAT, the total — and what is left of it per member. One button carries the amount into the event as the fee, so two numbers do not live side by side and drift apart. It is needed only for the promoter who wants the price before committing — which is why it is a step of its own that you switch on, not the way everybody has to go.
One click on ✔ ? ✘ and everyone sees who can make it. Three times per event — meet, stage, end — status from requested to confirmed, fee, comments, support act. Whoever is away is flagged before anyone drives anywhere.
Address, contact and what it was like last time — stage size, power, access. "Search address" asks OpenStreetMap if you want it to and fills in the coordinates; the navigation icon opens your device's map app. It has to be allowed in the settings first — otherwise the button stays grey and nothing leaves the server. Each venue counts how often you have played there, what is still to come, what was only asked for and what fell through; cancelled dates sit folded away below the ones that happened.
Breaks, announcements and encores in the right place, playing time in view, copy instead of rebuild. A brace ties a run of songs under one announcement. There is a print view for the stage — you choose what goes on the sheet — the teleprompter starts straight from the set, and what was played stays on record as history.
Lyrics and chord sheet full-screen, scrolling by themselves — sections colour-coded, the screen kept awake. Launched from the setlist, song by song, the tempo in BPM. Every musician switches to their own sheet.
Every song has a lifecycle — from idea through "in the set" to retired — and a counter for how often it played live. Lyrics and the guitarist's chord sheet sit with it, readable on stage in the teleprompter. A search box over title and original artist and a filter over the status find the one song even in a long list — the choice lives in the address, so a filtered list can be passed on, and the back button does what it should. The status "Demo" sits between proposal and in preparation.
Standing orders book themselves, member deposits are set against the rehearsal room rent, unpaid fees stand out. Who gets to see the treasury is a permission, not a habit.
Everything nested, from the flight case down to the capsule — every item with an owner, a location and its condition (new, B-stock or used). The purchase price belongs to whoever paid it and to nobody else; the invoice sits alongside as its own record. Recurring deadlines — testing, servicing — report themselves.
The members and their instruments turn into a plot the promoter can actually read — with a channel list and inputs instead of a sketch on a napkin.
One topic per subject, the posts underneath — and the way in lands at the first post you have not read, marked "new from here". No scrolling through three hundred messages looking for the place where you stopped. What is unread shows as a number on the app icon.
Who may see and change what is set by fine-grained permissions — not everyone sees the treasury, for instance. Stand-ins get only what their events need, and drop out of the stage-plot template.
No signal, and it is all still there: each member chooses in their profile what goes onto their own phone — events, setlists with print views, songs with lyrics and chords, the rider, the patch list. It keeps itself fresh in the background; a single event comes along at the push of a button.
Push for new dates, comments, yes and no — switchable per subject and per device. What is still open shows as a number on the app icon. Somebody who does not look in for a week gets a mail in the evening with what they have not seen: new entries, unread posts, their own open tasks, gigs they have not answered. What cannot wait until the evening — the gig has moved, the rehearsal is off — is marked important and goes out at once. A cancelled or rescheduled event reports itself; every other change stays quiet, so that a notification is worth reading.
Sign in with a passkey — by fingerprint, face or device PIN, no password at all. Prefer a password? Protect it with a second factor: a six-digit number that changes every 30 seconds. Whoever knows the password still cannot get in.
One search field over everything — description, origin, event, tags. The thirty photos from a gig are ticked and assigned to the event in one go; sorted by year, event and photographer. A linked OneDrive folder is checked daily and new pictures come in by themselves — the files stay where they are. A single tick puts a photo on the public page. The gallery keeps the preview and, beside it, the folder tree the pictures already live in.
After the gig comes the billing. The invoice is written from the contract — promoter, service, fee and tax rate are already there — gets a running number and goes into the treasury as an open item until the money arrives. Nothing is paid inside the application: it writes the invoice and remembers what is outstanding.
Whoever books your gigs gets an account of their own — and sees less than the band. You decide whether the agency sees the dates with their content or only that a day is taken; of the contracts it sees only its own. The setting starts on the closed side, because a role that arrives with everything open has already passed things on before anybody thinks about it.
Putting up the posters is something three people do. A task therefore belongs to as many members as it needs, with a number beside it: all of them, or one, or two. Everybody ticks for themselves, and you can see who has done their part — instead of one person ticking for everybody and nobody knowing where things stand. A task hangs on the thing it is about: an event, a song, a venue.
Booking requests arrive by mail — and sit there until somebody turns them into an event. Bandregie fetches the mailbox over IMAP, read-only, and turns a request into an event proposal you check before it reaches the calendar. Replies are written in place and stay with the thread, and attachments move into the event they belong to.
A sound engineer, a horn section, a stand-in — whoever joins for one night needs no account. Guests live in a contact list and are booked onto an event; the invitation is a link they accept or decline through. Once they accept, that same link is their way into the running order, the rider and the setlist — for that one event, read-only, until noon the day after. A decline voids it at once. Each booking can be rated, and the contact list shows the average.
A complete installation with a fictional band: events, songs, setlists, treasury, equipment. Log in as the admin to see everything — or as a member and as the stand-in to see how much less those two are shown.
The demo resets every hour on the hour. Anything you create, change or delete is gone afterwards — so go ahead and try everything.
| Admin | admin@example.com |
demo |
|---|---|---|
| Member | lisa@example.com |
demo |
| Stand-in | nora@example.com |
demo |
The interface ships in German, English, Dutch, French, Spanish and Italian. Band texts and the legal pages are maintained per language, where a translation is missing, the text appears in the next best language instead of a gap. Which languages appear is up to the band, and every string can be corrected in the band area.
Band name, logo, background image and favicon are configured in the settings. Nothing points back at Bandregie unless you want it to — the public page is yours.
Bandregie is released under the Functional Source License 1.1 with Apache 2.0 as the future license. Any use is permitted except a competing use: offering Bandregie itself as a commercial product or hosted service. Two years after each release that restriction lapses as well and the version becomes Apache 2.0.
Free for your own band: install it, run it, change it, pass it on — even if the band earns money with its gigs.
This is a source-available license, not an OSI-approved open source license, because open source by definition may not restrict commercial use. GitHub therefore displays it as “Other”.
PHP 8.1 or newer with pdo_mysql and fileinfo, MariaDB 10.4+ or MySQL 8, and a web server. No build, no package install, no Node.
git clone https://github.com/computi71/bandregie.git
cp app/config.example.php app/config.php
Fill in the credentials and open the site: the application creates its tables and imports the translations itself, and it tells you how to sign in the first time. One button in the settings fills the installation with demo data, a second removes exactly those rows again.
Current version: 2.50.1