Barcamptools – die Web-Anwendung für Jugendbarcamps

Barcamptools - die Webanwendung mit Python und MongoDB

Zielsetzung

Die Web-Anwendung Barcamptools (Codename "Camper") soll die Organisation von Barcamps vereinfachen und dazu entsprechende Werkzeuge bereitstellten. Ein Prototyp wurde zunächst 2011 für das JMStVCamp entwickelt.

Aus dem positiven Feedback wurde in der Fortführung eine umfassendere Version für den IJAB e.v. und das Bundesministerium für Familie, Senioren, Frauen u. Jugend entwickelt. Der Fokus wurde dabei auf internationale Jugendbarcamps gesetzt. 

Was braucht ein Barcamp?

In enger Zusammenarbeit mit Jürgen Ertelt vom IJAB haben wir eine umfangreiche Anforderungsanalyse erstellt, an deren Ende eine Vielzahl von möglichen Werkzeugen stand.

Für die Version 1.0 haben wir die Teilnehmerverwaltung mit Wartelistenfunktion, Sessionvorschläge, Dokumentations-Pads, einen einfachen Newsletter, anpassbare Mail-Templates und die Mehrsprachigkeit implementiert.

Erfolg dank Open Source

Bei den Barcamptools handelt es sich um Open Source-Software (Link zum Repository). Durch den offenen Ansatz ergaben sich neue Kooperationen und Chancen: So hat der Python Software-Verband die Barcamptools für den Schüler-Wettbewerb pymove3d eingesetzt und weiterentwickelt. Weiterhin haben sich Sponsoren - herauszuheben sind hier die Hochschule RheinMain und die LKJ Berlin - gefunden, die eigene Feature-Wünsche implementieren liessen. 

Diese Erweiterungen sind in die öffentliche Anwendung zurückgeflossen und es konnte 2015 die Version 2.0 veröffentlicht werden, die sich durch eine Vielzahl von Neuerung auszeichnet, die wir hier beschrieben haben.

Barcamptools Version 2.0

Abgesehen von dem längst notwendigen Responsive Design haben wir mit Version 2.0 den Administrationsbereich komplett überarbeitet (alles auf Bootstrap 3 aufbauend). So sind viele Seiten nun dynamischer und brauchen weniger Seitenreloads, wie z.B. der neue Sessionplan-Editor. Mit diesem lässt sich der Zeitplan erstellen und die Sessions eintragen. Dabei können bestehende Sessionvorschläge und Teilnehmer direkt per Auto-Complete eingetragen oder per Drag'n'Drop verschoben werden.

Die Implementierung dieses Editor haben wir nach der Evaluierung von mehreren Optionen (u.a. React.js und angular.js) mit jQuery und Handlebars gelöst.

Die Basis: Python und MongoDB 

Technische Grundlage für diese Web-Anwendung bildet Python und unser eigenes Framework 'starflyer'. 'starflyer' orientiert sich dabei an dem Microframework flask, jedoch mit abweichenden Philosophie. Aufbauend auf starflyer haben wir wiederverwendbare Module entwickelt, z.B. für den Mailversand, die Benutzer- oder die Medienverwaltung.

Als Datenbank haben wir uns für MongoDB entschieden. Aufgrund unserer Erfahrungen mit der einfachen Handhabung und Skalierbarkeit setzen wir die Datenbank zunehmend ein. Gerade komplexe Datenstrukturen lassen sich mit MongoDB einfacher abbilden als mit einer SQL-Datenbank. Nachdem wir zunächst fertige Objekt-Mapper genutzt haben, haben wir mit mongogogo schlussendlich einen eigenen Mapper implementiert, da die Philosophie der bestehenden Mapper nicht 100% unseren Anforderungen entsprach.