Die ultimative App für deinen nächsten Besuch im Europa-Park
Wir haben zu dritt im Rahmen eines Schulprojektes eine Web-App entwickelt, welche das Ziel hat dein Erlebnis im Europa-Park zu verbessern.
Die Idee
Wir wollten eine App entwickeln, welche das Erlebnis bzw. die Effizienz eines Besuches im Europa-Park verbessert. Dies wollen wir durch die automatisch Erstellung eines Tagesplan durch die App erreichen. Dieser Tagesplan soll aus den Attraktionen bestehen, welche der Benutzer zuvor ausgewählt und priorisiert hat. Anschliessend erstellt unsere App eine Reihenfolge (der Tagesplan), welche Attraktion wann besucht werden sollte. Die Reihenfolge soll anhand verschiedener Faktoren erstellt werden, wie beispielsweise der Wartezeit und dem Wetter. Nun kann der Besucher im Europa-Park die Attraktionen nach unserem Tagesplan "abarbeiten" und im Optimalfall einiges an Zeit einsparen. Wenn der Benutzer spontan eine Attraktion bereits früher fährt, als in unserem Tagesplan angezeigt, ist das auch kein Problem. Dann kann er diese im App einfach als "Erledigt" markieren oder er fährt diese nach Tagesplan später erneut. ;)
Umsetzung
In der Berufsschule haben wir im Rahmen eines Informatik-Moduls die Aufgabe erhalten, als Gruppe, ein eigenes Projekt zu planen und zu realisieren. Wir haben uns für die Umsetzung der eben genannten Idee, einer App zur Optimierung des Ausfluges im Europa-Park, entschieden.
Zu Beginn des Projektes mussten wir einiges an Planung durchführen. Diese umfasste unter anderem folgende Dokumente:
- Ideenfindung
- Projektauftrag
- Stakeholderanalyse
- Risikoanalyse
- Nutzwertanalyse
- Anforderungsanalyse
- Projektplan
Nachdem diese Planungsschritte abgeschlossen waren, durften wir mit der Realisierung, also der eigentlichen Entwicklung unserer App, beginnen.
Wir haben uns, aufgrund des begrenzten zeitlichen Rahmens zur Realisierung, für die Entwicklung mit Python und dem Framework Streamlit entschieden. Streamlit ist ein Framework für Python, welches ermöglicht schnell eine Web-App mit User Interface zu entwickeln und somit mehr Fokus auf die eigentliche Entwicklung der Funktionen der App zu setzen. Streamlit wird hauptsächlich zur Entwicklung von Apps zur Datenanalyse-/auswertung und KI-Anwendungen verwendet. Streamlit ist jedoch bei weitem nicht perfekt und hat einige Schwachstellen, beispielsweise bei der fehlenden Authentifizierung und Benutzerverwaltung. Diese mussten wir selbst implementieren. Ebenfalls mussten wir Lösungen finden, damit die App in einer angenehmen Geschwindigkeit läuft und der Benutzer beim Neuladen der Seite angemeldet bleibt. Streamlit beginnt nämlich bei jedem Neuladen der Seite eine neue Session. Trotzt allem müssen wir im Nachhinein jedoch sagen, dass es die richtige Entscheidung war unsere App mit Streamlit zu entwickeln.
Im Backend verwenden wir eine PostgreSQL Datenbank, in welcher automatisch alle 5 Minuten die aktuellen Wartezeiten aus dem Europa-Park und die restlichen Daten abgespeichert werden. Der Aufbau der App ist wie folgt:
Die Informationen zu den Wartezeiten beziehen wir von der API von Wartezeiten.APP. Diese stellen eine App inklusive der API zur Verfügung, welche die Wartezeiten und Statistikdaten von verschiedenen Freizeitparks einfach zugänglich macht. Die Wetterdaten beziehen wir vom Open-Source Projekt wttr.in, welche einen einfachen Dienst zum Abfragen von diversen Wetterdaten auf der ganzen Welt anbieten.
Für das Hosting der App haben wir uns für einen virtuellen Server von Hetzner* entschieden, da diese virtuelle Server zu attraktiven Preisen bieten und wir bereits bei anderen Projekten gute Erfahrungen mit Hetzner gemacht haben.
Wie es funktioniert
Unsere App verwendet einen Algorithmus zur Erstellung des Tagesplans. Dieser Algorithmus funktioniert nach einem Scoring-System. Hierbei erhält jede Attraktionen einen Score zugeteilt, anhand welchem dann die Reihenfolge für den Tagesplan entsteht. Der Algorithmus berücksichtig hierbei die folgenden Faktoren:
- Wetterdaten
- Aktuelle Wartezeiten
- Wartezeit-Statistiken (Analyse der Wartezeiten der letzten Monate)
- Benutzerdefinierte Prioritätsliste
- Metadaten der Attraktionen
- Erfahrungswerte
- Übrige Zeit im Park, Ankunftszeit & Abfahrszeit
Für die Auswertung der Wetterdaten wird zusätzlich, stündlich, ein zweites Scoring ausgeführt. Die Berechnung aus den Wetterdaten wird nur auf Wasserattraktionen angewendet, da das Wetter auf die anderen Attraktionen wenig Einfluss hat. Das heisst, wenn der Algorithmus sieht, dass es momentan regnet und später nicht mehr, erhalten Wasserattraktionen weniger Punkte und werden somit später im Tagesplan eingeplant. Wenn es jedoch momentan nicht regnet und erst später beginnt, werden die Wasserattraktionen im Tagesplan höher priorisiert. Zudem ist die Gewichtung von Regen bei warmem Temperaturen tiefer, als bei kaltem Temperaturen.
Nach der Anmeldung in unserer App, kann der Benutzer festlegen, wann er plant im Europa-Park anzukommen und am Abend wieder abzureisen. Diese Angaben werden dann von unserem Algorithmus verwendet um zu wissen, ob Attraktionen überhaupt noch gefahren werden können und wie viel Zeit des Tages noch zur Planung zur Verfügung stehen.
Ebenfalls kann der Benutzer festlegen, welche Attraktionen er besuchen möchte und diese in drei Prioritäten einteilen. Anhand dieser Prioritäten erhalten die Attraktionen im Scoring einen höheren Wert und werden dadurch im Tagesplan entsprechend höher oder tiefer priorisiert. Durch diese ganzen Berechnungen versuchen wir eine App zu schaffen, welche einen Mehrwert während dem Tag im Europa-Park bietet.
Welche Vorteile bietet unsere App?
Da unsere App für dich komplett kostenlos ist, bietet diese für dich nur Vorteile. Unsere App erstellt dir völlig automatisch einen dynamischen Tagesplan, welcher sich während dem Tag anpasst und du hast die Möglichkeit diesen zu nutzen. Und auch wenn der Tagesplan keinen Sinn macht und nicht stimmt, du hast nichts zu verlieren. Du wirst schliesslich nicht gezwungen, dich an unseren Tagesplan zu halten.
Wie geht es weiter?
Momentan haben wir die Grundfunktion unserer App, die Erstellung des Tagesplans, entwickelt. In Zukunft wäre es möglich den Umfang unserer App auf weitere Freizeit-/Themenparks auszuweiten und weitere Analysefunktionen einzubauen, welche den Tag in Freizeitparks weiter optimieren. Mit genügend Wartezeitdaten wäre es beispielsweise möglich eine Funktion zu entwickeln, welche die Wartezeit in den nächsten Tagen und Wochen vorhersagt oder auch einen Ausflugsplaner zu integrieren, welcher dabei hilft den optimalen Tag für den Ausflug in den Freizeitpark zu finden.
*Affiliate-Link (Beim Erstellen eines Accounts bei Hetzner über meinen Link erhältst du 20€ Startguthaben und ich erhalte 10€ auf meinem Account gutgeschrieben. Danke für deine Unterstützung)