bandregie

Self-hosted band software

One band. One place. No service in between.

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.

Try the demo View on GitHub

PHP and a database. No framework, no build step, no dependencies — install it once and it still runs in five years.

How it usually goes

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.

  • Who can play on the 14th?
  • What did we play there last time?
  • Does the rehearsal room cost more than we pay in?
  • Which case is the large-diaphragm mic in — and what did it cost?
  • Does the promoter know when we load in?

What it is built for

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.

Answers, not lists

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.

Nothing that has to be maintained

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 is private stays private

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.

What you get

The screenshots show the demo data that ships with the project — a fresh installation looks like this straight away.

Public band page with upcoming shows and a photo gallery

Public band page

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.

Performance contract with promoter, fee and wording that no longer changes

A contract, not a mail thread

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.

Calculation of a gig with single items, discount and total

What the gig should cost

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.

Event overview with an availability poll per member

Events and availability

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.

Venue with address, navigation button, counters and the dates played there

Venues that remember

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.

Setlist with songs, breaks and an encore block

Setlists

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.

Stage teleprompter with colour-coded sections and tempo in BPM

A teleprompter for the stage

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.

Song list with search box, status filter, live counter and rating

Songs with a life story

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.

Band treasury with entries, standing orders and balances

Band treasury

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.

Equipment list with nested items and deadlines

Equipment

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.

Stage plot with member positions and a channel list

Stage plot and rider

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.

A topic in the band chat with posts and the mark for the first unread one

Talking, without a group chat

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.

Member list with roles and permissions

Members and permissions

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.

Profile selection of what stays offline on the phone

Offline on stage

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.

Notification settings with topics per device

Knowing without looking

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.

Profile section for the sign-in second factor

Sign in without password worries

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.

Photo management with search, event assignment and folders by year

A photo library that sorts itself

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.

The invoice for a gig

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.

An account for the agency

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.

Tasks that belong to several people

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.

The band mailbox

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.

Guests for one night

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.

And also

  • Absences with a warning when they clash with a date
  • A tax summary over a year of income
  • Calendar subscription (iCal) for phone and computer — with the place and a tappable navigation link
  • Marks on everything new or changed, until each member has seen it
  • Illustrated help that explains the way from the request to the fee
  • Backups with restore, and a system check

Try it live

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.

Open the demo

Logins — the same for every visitor
Admin admin@example.com demo
Member lisa@example.com demo
Stand-in nora@example.com demo

Six languages

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.

Your site, not ours

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.

License

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”.

Getting started

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.

Installation guide

Current version: 2.50.1