Eén band, geen platform
Een installatie hoort bij één band. Geen accounts over banden heen, geen andere band in dezelfde database, geen dienst ertussen die kan verdwijnen. De server, de database en de gegevens zijn van de band.
Bandsoftware op je eigen server
Een aanvraag wordt doorgerekend, per contract afgesproken, gespeeld en gefactureerd — zonder het programma te verlaten. Plus data, setlists, nummers, bandkas, equipment en een openbare bandpagina. Bandregie draait op je eigen server — geen account bij wie dan ook, geen abonnement, niemand anders die jullie gegevens heeft.
Demo proberen Bekijk op GitHub
PHP en een database. Geen framework, geen buildstap, geen afhankelijkheden — één keer installeren en over vijf jaar draait het nog.
Een band van zes draait op een groepsapp, drie spreadsheets en één persoon die alles onthoudt. Het antwoord op elke vraag staat érgens — je moet alleen weten wie het heeft en wanneer diegene weer op de telefoon kijkt.
Elk scherm in Bandregie bestaat omdat iemand precies die vraag ooit in de groepsapp zette en toen ging wachten.
Een installatie hoort bij één band. Geen accounts over banden heen, geen andere band in dezelfde database, geen dienst ertussen die kan verdwijnen. De server, de database en de gegevens zijn van de band.
Niet nóg een programma om gegevens in te typen. Elke pagina beantwoordt een vraag die anders in de groepsapp blijft hangen — meteen en voor iedereen hetzelfde.
Geen framework om bij te werken, geen buildstap, geen pakketlijst, geen script van derden. Wie dit installeert, moet het over vijf jaar nog kunnen draaien zonder dat iemand eraan gewerkt heeft.
Wat iemand voor zijn eigen materiaal betaalde, wat hij inlegt, wat van hem is — zichtbaar voor hem, niet voor de band. Wie iets niet mag zien, krijgt niet alleen de knop verborgen: de pagina blijft voor hem dicht, ook als hij het adres kent. Een invaller ziet de data waarvoor hij gevraagd is en verder niets.
De afbeeldingen tonen de meegeleverde demogegevens — een verse installatie ziet er meteen zo uit.
Wat organisatoren en publiek zien: komende optredens, foto's, muziek, contact. Bandnaam, logo en achtergrond komen uit de instellingen. Heb je al een site? Zet de openbare pagina op doorverwijzen — het ledengedeelte, de agenda-feed en de juridische pagina's blijven bereikbaar.
Zo werken de meeste bands: contract eruit, getekend terug, klaar. Datum, plaats, speeltijd en gage staan al bij de datum — het contract haalt ze daar op en jullie vullen de tekst aan. De partij die tekent is niet de zaal: die heet "Stadsfeest", geboekt wordt er via een bureau twee dorpen verderop, en dat bureau tekent. Daarom zijn organisatoren eigen gegevens, los van de locatie. Wat verstuurd en getekend is, blijft woordelijk staan, ook als iemand het sjabloon later aanpast. Elektronische handtekeningen zijn er bewust niet — er wordt op papier getekend en de scan gaat naar de datum.
Uitgerekend uit jullie eigen prijslijst in plaats van uit het hoofd: het eerste uur met op- en afbouw, verdere speeltijd, reis per kilometer, eigen installatie, een gasttechnicus. Daaronder de korting voor het dorpsfeest, de btw, het totaal — en wat er per lid overblijft. Eén knop zet het bedrag als gage bij de datum, zodat er niet twee getallen naast elkaar leven die uit elkaar lopen. Het is alleen nodig voor de organisator die de prijs wil weten voordat hij zich vastlegt — daarom is het een aparte stap die je aanzet, en niet de weg die iedereen moet gaan.
Eén klik op ✔ ? ✘ en iedereen ziet wie kan. Drie tijden per afspraak — verzamelen, podium, einde — status van aangevraagd tot bevestigd, gage, opmerkingen, voorprogramma. Wie weg is, valt op voordat iemand vertrekt.
Adres, contactpersoon en hoe het de vorige keer was — podiumgrootte, stroom, toegang. „Adres zoeken" vraagt desgewenst bij OpenStreetMap na en vult de coördinaten in, het navigatiepictogram opent de kaartenapp van je toestel. Het moet eerst in de instellingen worden toegestaan — anders blijft de knop grijs en verlaat er niets de server. Elke locatie telt mee hoe vaak jullie er hebben gespeeld, wat er nog aankomt, wat alleen is aangevraagd en wat is afgezegd; afgezegde data liggen ingeklapt onder de data die wel doorgingen.
Pauzes, aankondigingen en toegiften op de juiste plek, speelduur in beeld, kopiëren in plaats van opnieuw bouwen. Een accolade vat meerdere nummers samen onder één aankondiging. Voor het podium is er een printweergave — je kiest wat erop komt —, de teleprompter start rechtstreeks vanuit de set, en wat gespeeld is blijft als geschiedenis staan.
Songtekst en akkoordblad schermvullend, scrollen vanzelf — secties in kleur, het scherm blijft aan. Gestart vanuit de setlist, nummer voor nummer, het tempo in BPM. Elke muzikant schakelt naar zijn eigen blad.
Elk nummer heeft een levensloop — van idee via „in het programma" tot afgevoerd — en een teller hoe vaak het live klonk. Songtekst en het akkoordblad van de gitarist horen erbij, op het podium leesbaar in de teleprompter. Een zoekveld over titel en origineel en een filter op status vinden dat ene nummer ook in een lange lijst — de keuze staat in het adres, dus je kunt hem doorgeven en de terugknop doet wat hij moet doen. De status "Demo" zit tussen voorstel en in voorbereiding.
Doorlopende opdrachten boeken zichzelf, de inleg van de leden staat tegenover de huur van de oefenruimte, openstaande gages vallen op. Wie de kas mag zien, bepaalt het rechtenbeheer.
Alles in elkaar, van de flightcase tot de capsule — elk onderdeel met eigenaar, standplaats en staat (nieuw, B-stock, gebruikt). De aankoopprijs is van wie betaald heeft en van niemand anders; de factuur ligt er als eigen bewijsstuk bij. Terugkerende termijnen — keuring, onderhoud — melden zichzelf.
Uit de leden en hun instrumenten ontstaat een plan dat de organisator echt kan lezen — met kanaallijst en ingangen in plaats van een schets op een servet.
Eén onderwerp per zaak, de berichten eronder — en je komt binnen bij het eerste bericht dat je nog niet hebt gelezen, gemarkeerd met "nieuw vanaf hier". Geen gescrol door driehonderd berichten op zoek naar de plek waar je was gebleven. Wat ongelezen is, staat als getal op het app-icoon.
Wie wat mag zien en wijzigen bepaalt een fijnmazig rechtenbeheer — niet iedereen ziet de bandkas. Invallers krijgen alleen wat hun optredens nodig hebben en vallen uit de sjabloon voor het podiumplan.
Geen bereik, en toch staat alles er: elk lid kiest in het profiel wat op de eigen telefoon komt — optredens, setlists met afdrukweergave, nummers met tekst en akkoorden, de rider, de patchlijst. Het werkt zichzelf op de achtergrond bij; een los optreden gaat met één knop mee.
Push voor nieuwe data, reacties, toe- en afzeggingen — per onderwerp en per toestel aan of uit. Wat nog openstaat, staat als getal op het app-icoon. Wie een week niet binnenkijkt, krijgt 's avonds een mail met wat hij nog niet heeft gezien: nieuwe items, ongelezen berichten, eigen openstaande taken, optredens waarop hij niet heeft geantwoord. Wat niet tot de avond kan wachten — het optreden is verzet, de repetitie gaat niet door — wordt als belangrijk gemarkeerd en gaat meteen de deur uit. Een afgezegd of verzet optreden meldt zichzelf; elke andere wijziging blijft stil, zodat een melding het lezen waard is.
Inloggen met een passkey — via vingerafdruk, gezicht of apparaat-pin, helemaal zonder wachtwoord. Liever een wachtwoord? Beveilig het met een tweede factor: een zescijferig getal dat elke 30 seconden verandert. Wie het wachtwoord kent, komt er zo nog niet in.
Eén zoekveld over alles — omschrijving, herkomst, optreden, labels. De dertig foto's van een optreden vink je aan en wijs je in één keer aan het optreden toe; gesorteerd op jaar, optreden en fotograaf. Een gekoppelde OneDrive-map wordt dagelijks gecontroleerd, nieuwe foto's komen er vanzelf bij — de bestanden blijven waar ze staan. Eén vinkje zet een foto op de openbare pagina. De galerij houdt de voorvertoning en daarnaast de mappenboom waarin de foto's toch al staan.
Na het optreden wordt er afgerekend. De factuur ontstaat uit het contract — organisator, prestatie, gage en btw-tarief staan er al — krijgt een doorlopend nummer en gaat als openstaande post naar de bandkas tot het geld binnen is. Er wordt nergens in de toepassing betaald: ze schrijft de factuur en onthoudt wat openstaat.
Wie jullie optredens regelt, krijgt een eigen account — en ziet minder dan de band. Jullie bepalen of het bureau de data met inhoud ziet of alleen dat een dag bezet is; van de contracten ziet het alleen de eigen. De instelling begint aan de gesloten kant, want een rol die met alles open binnenkomt, heeft al doorgegeven voordat iemand erover nadenkt.
Posters plakken doen drie mensen. Een taak hoort daarom bij zoveel leden als nodig is, met een getal erbij: allemaal, of één, of twee. Iedereen vinkt voor zichzelf af, en je ziet wie zijn deel al heeft gedaan — in plaats van dat één iemand voor iedereen afvinkt en niemand weet waar hij aan toe is. Een taak hangt aan datgene waar het over gaat: een datum, een nummer, een locatie.
Aanvragen komen per mail — en blijven liggen tot iemand er een optreden van maakt. Bandregie haalt de mailbox op via IMAP, alleen lezend, en maakt van een aanvraag een voorstel dat je controleert voordat het in de agenda staat. Antwoorden schrijf je ter plekke en ze blijven bij het gesprek, bijlagen verhuizen naar het optreden waar ze bij horen.
Een geluidstechnicus, een blazerssectie, een invaller — wie voor één avond meedoet, heeft geen account nodig. Gasten staan in een contactenlijst en worden op een optreden geboekt; de uitnodiging is een link waarmee ze toe- of afzeggen. Na de toezegging is diezelfde link hun toegang tot draaiboek, rider en setlist — alleen voor dat optreden, alleen lezen, tot de middag erna. Een afzegging maakt hem meteen ongeldig. Elke boeking krijgt een beoordeling; de lijst toont het gemiddelde.
Een volledige installatie met een verzonnen band: optredens, nummers, setlists, kas, materiaal. Meld je aan als beheerder om alles te zien — of als lid en als invaller, om te zien hoeveel minder die twee te zien krijgen.
De demo wordt elk heel uur teruggezet. Alles wat je aanmaakt, wijzigt of verwijdert is daarna weg — probeer dus gerust alles uit.
| Beheerder | admin@example.com |
demo |
|---|---|---|
| Lid | lisa@example.com |
demo |
| Invaller | nora@example.com |
demo |
De interface is er in het Duits, Engels, Nederlands, Frans, Spaans en Italiaans. Bandteksten en juridische pagina's worden per taal onderhouden, ontbreekt een vertaling, dan verschijnt de tekst in de eerstvolgende taal in plaats van een lege plek. Welke talen verschijnen bepaalt de band, en elke tekst is in het bandgedeelte bij te werken.
Bandnaam, logo, achtergrond en favicon staan in de instellingen. Naar buiten toe wijst niets op Bandregie als jullie dat niet willen — de openbare pagina is van jullie.
Bandregie staat onder de Functional Source License 1.1 met Apache 2.0 als toekomstige licentie. Alles is toegestaan behalve concurrerend gebruik: Bandregie zelf aanbieden als commercieel product of gehoste dienst. Twee jaar na elke uitgave vervalt ook die beperking en valt die versie onder Apache 2.0.
Gratis voor je eigen band: installeren, draaien, aanpassen, doorgeven — ook als de band met optredens geld verdient.
Dit is een licentie met openbare broncode, maar geen door de OSI erkende opensourcelicentie, omdat opensource per definitie commercieel gebruik niet mag beperken. GitHub toont hem daarom als “Other”.
PHP 8.1 of nieuwer met pdo_mysql en fileinfo, MariaDB 10.4+ of MySQL 8, en een webserver. Geen build, geen pakketinstallatie, geen Node.
git clone https://github.com/computi71/bandregie.git
cp app/config.example.php app/config.php
Toegangsgegevens invullen en de pagina openen: de toepassing maakt zelf de tabellen aan en importeert de vertalingen, en ze vertelt je hoe je de eerste keer inlogt. Eén knop in de instellingen vult de installatie met demogegevens, een tweede verwijdert precies die regels weer.
Naar de installatiehandleiding
Huidige versie: 2.50.1