Booky – Das Online-Buchungssystem zum selber Hosten

Das Jahr 2020 war im Zeichen der Pandemie auch das Jahr der Buchungssysteme. Jeder braucht plötzlich Eins und häufig sind die Anforderungen in einigen Randfällen so spezifisch, dass es ein einfaches Online-Formular am Ende doch nicht genügt.

Obendrein spielen insbesondere für bspw. Schulen auch Datenschutz-Aspekte eine wichtige Rolle, sodass Buchungen nicht einfach auf die großen kommerziellen Event-Anbieter ausgelagert werden sollten.

So kam also auch ich zu dem Vergnügen für das Collegium Josephinum binnen drei Wochen ein Buchungssystem aus dem Boden stampfen zu dürfen, mit welchem der traditionelle Weihnachtsbasar der Schule abgewickelt werden sollte.

Funktionsumfang

Die Anmeldung sollte über den Schulaccount (Active Directory) einschränkbar sein, genauso wie die buchbare Anzahl Tickets je Buchung und je Account. Optional sollten sich aber auch Externe für ein Event registrieren können. Kernidee war zudem, dass man nach Registrierung mittels eines eigenen Login-Bereichs seine Daten nachträglich aktualisieren können sollte um zum Beispiel selbstständig wieder stornieren zu können, oder andere Daten anzupassen.

Das System schickt nach erfolgter Anmeldung eine Email mit den Tickets im PDF- und im PKPass-Format (yay, Apple Wallet!!), welche auch einen QR-Code beinhalten. Außerdem beinhaltet die Email einen Zugangslink, der einen mittels Token direkt in den Benutzerbereich einloggt, wo man seine Buchungen aktualisieren kann. Das soll vergessene Passwörter vorbeugen.

Sämtliche Lehrkräfte erhalten mittels Active Directory Berechtigungsgruppe Zugriff auf den administrativen Teil um auch eigene Events erstellen zu können. Langfristig wäre auf diese Weise zB. auch die Anmeldung für Klassenfahrten oder Elternabende denkbar.

Eingesetzte Technologie

Aufgrund des engen Zeitfensters von gerade einmal drei Wochen bis zum ersten Anmeldestart wagte ich keine großen Experimente und nutze für das REST-Backend erneut das Django REST-Framework sowie im Frontend eine Angular-Anwendung. Beides packte ich jeweils in eigene Docker-Container, welche mittels Docker-Compose mit einem dritten nginx HTTP-Proxy Container mitsamt Docker-Volume verheiratet wurden und einfach zu deployen sind.

Anwendungen und Erweiterungen

Als sich abzeichnete, dass aufgrund des neuen „Lockdown Light“ das Schulfest nicht stattfinden konnte, beschloss die Schule mittels Weihnachts-Shuttle interessierte Familien mit Waren bepackt und kostümiert zuhause besuchen zu können. Um den Planungsaufwand zu erleichtern erweiterte ich kurzfristig das System um eine Kartenansicht der buchenden Adressen im Adminbereich. Die Geodaten einer Adresse werden hierbei bei Anmeldung vom Backend einmalig abgefragt und in der Datenbank hinterlegt. Der Angular-Client kann die Koordinaten dann direkt auf der Karte einfach einblenden. So ließen sich Routen einfacher planen.

Der Kartenansicht fiel die physische CheckIn- und CheckOut-Funktionalität an Eingängen vorerst zum Opfer. Sie soll nun aber bald nachgerüstet werden und ist bereits konzeptuell vorgesehen. Zudem ist es inzwischen möglich, Administratoren je Event einstellen zu können.

Eingesetzt wurde das System zudem bereits für Corona-konforme Weihnachtsgottesdienste, sowie zuletzt auch zur Buchung von betriebsinternen Corona PCR-Testterminen für Kollegen. Die Alternative wäre in den meisten Fällen wohl sonst die Papieranmeldung oder ein Wust an Emails gewesen, sodass sich das Projekt wohl als Erfolg verbuchen lässt.

Logo: Icon made by Freepik from www.flaticon.com

Kommentar verfassen