fflog_titleimage

Projekt | FF Mannschaftsbuch

Von am 30.12.2024

Die Niederösterreichischen Feuerwehren protokollieren sämtliche ihrer Aktivitäten. Häufig passiert dies in Form eines Mannschaftsbuches. Ziel dieses Projektes war es einerseits eine digitalisierte Form der Protokollierung zu schaffen und andererseits Erfahrung mit C#.NET zu sammeln.

  1. Problemstellung & Zielsetzung
  2. Funktionsübersicht
  3. Technologiestack | .NET & Blazor WASM
  4. Mögliche Weiterentwicklung
  5. Schlussworte

Problemstellung & Zielsetzung

Bei den niederösterreichischen Feuerwehren müssen sämtliche durchgeführten Tätigkeiten protokolliert werden. Manche Feuerwehren verwenden dazu ein leeres Notizbuch (=Mannschaftsbuch), das im Feuerwehrhaus aufliegt und in dem alle einschreiben können.

Ein Berechtigter, wie der Verwalter oder Kommandant nimmt sich dieses Buch und trägt die Daten ins FDISK (Feuerwehrdateninformationssystem und Katastrophenschutzmanagement) ein. Dabei wird erfasst: das Datum, die zeitliche Dauer, die Anwesenden, der Protokollierende sowie eine Beschreibung der Tätigkeit. Problem dabei ist einerseits die schlechte Lesbarkeit mancher Einträge und andererseits das es manchmal vergessen wird und Einträge dann an anderer Stelle später wieder auftauchen.

Die Idee hinter diesem Projekt ist es eine Anwendung zu entwickeln mit der die Tätigkeiten digital erfasst werden können. Zum Beispiel könnte auf der Innenseite der Haustüre ein QR-Code mit einem Hinweis auf den Tätigkeitsnachweis hängen. Durch Einscannen, gelangt man zur Webseite, über die der Eintrag am Smartphone erledigt werden kann (=Print-To-Mobile). Annahme dabei ist das sich derjenige im richtigen WLAN befindet. Da das Eintragen ins FDISK eine Notwendigkeit darstellt, soll dies dem Verwalter zumindest vereinfacht werden, indem dieser eine Art Abarbeitungsliste erhält. Er kann Einträge damit als eingetragen markieren, sie nach Datum sortieren und sie auch editieren.

Weiters ist es ein Hauptziel sich näher mit C#.NET auseinanderzusetzen, da hier keinerlei Vorwissen besteht, jedoch C# nach wie vor in vielen Unternehmen gesucht wird. Daher ist damit zu rechnen das insgesamt weniger Features umgesetzt werden können als in einem Projekt mit bekanntem Technologiestack.

Resultate bzw. Funktionsübersicht

Resultat ist eine einfache Webanwendung mit Serveranbindung die auf einem Raspberry Pi in Docker Containern bereitgestellt wird.

Nach dem Aufruf der Root-URL (= Einscannen des QR-Codes) kann nun ein Benutzer ausgewählt werden, welcher zur Signatur der erstellten Aktivitäten dient. Ist der gewünschte Benutzer noch nicht vorhanden kann direkt ein neuer erstellt werden, in dem der zu verwendende Name ins Suchfeld eingegeben wird. Anschließend bleibt der ausgewählte Benutzer durch den LocalStorage des Browsers gespeichert.

Danach gelangt man zur Erstellung einer neuen Aktivität. Hier gibt man eine Kurzbeschreibung in Form des Titels ein sowie das Start und Ende Datum. Durch drücken auf den “Beschreibung”-Button kann man eine längere Beschreibung eingeben und durch das Drücken des Button “Anwesende” kann man die beteiligten Personen auswählen. Wie bei der Benutzerauswahl vorhin können auch an dieser Stelle direkt neue Benutzer, anhand der Eingabe im Suchfeld, erstellt werden.

Klickt man auf das Menü kann zur Übersichtsseite für den Verwalter gesprungen oder der ausgewählte Benutzer gewechselt werden. Auf der Übersichtsseite werden alle erfassten Aktivitäten gelistet. Diese können hier bestätigt (= Eingetragen ins FDISK), verändert oder gelöscht werden. Durch klicken auf das Menü können Filter wie Datumsspanne, Suchfeld oder “bestätigte Einträge anzeigen” gesetzt werden.

Technologiestack | .NET & Blazor WASM

Am Beginn des Projektes stand die Anfertigung eines Low Fidelty Mockups sowie eines ER-Datenbank-Diagramms. Im Anschluss wurde die Anwendung als Webapplikation umgesetzt. Dazu wurde frontendseitig auf Blazor Webassembly gesetzt. Diese Lösung von Microsoft ermöglicht es den Code auch am Frontend in C# zu schreiben, in dem dieser anschließend, mithilfe von Webassembly, dem Browser zur Verfügung gestellt wird. Zudem lassen sich mit .NET Maui solche Blazor Anwendungen relativ einfach in native bzw. hybride Applikationen umwandeln. Backendseitig wurde auf eine .NET Core REST API mit dem EF Framework Core und einer MariaDB Datenbank gesetzt. Als IDE kam Rider von Jetbrains zum Einsatz, welches in einer Studentenlizenz kostenlos bezogen werden kann.

Anahme war das die Applikation auf einem Raspberry Pi im Feuerwehrhaus bereitgestellt werden kann. Dazu wurde ein Docker Compose File erstellt, mit dem die Services, mit den richtigen Abhängigkeiten, gestartet werden können. Aufgrund der abweichenden Systemarchitektur zwischen Entwicklungsrechner und Raspberry (amd64 zu arm64) wurde ein Multiarchitecture Build mit docker buildx durchgeführt und das Container Image auf DockerHub zur Verfügung gestellt.

Toolset:

  • IDE: JetBrains Toolbox (Rider, DataGrip)
  • Frontend: .NET Blazor WebAssembly
  • Backend: .NET Core mit EF Framework Core
  • Datenbank: MariaDB
  • DevOps: GitLab

Bilder aus der Entwicklung:

Mögliche Weiterentwicklung

Eine mögliche Weiterentwicklung ist die Implemtierung eines Benutzermanagements mitsamt Rechteverwaltung und Login-Funktionalität. Weiters ist ein PDF-Export der Tätigkeiten eine sinnvolle Erweiterung zur Dokumentation und Archivierung der Tätigkeitserfassung. Auch die Möglichkeit den Beschreibungen Bilder anzuhängen wäre eine Option. Wichtig wäre auch noch eine automatisierte Backupfunktionalität der Datenbank.

Schlussworte

Mein persönliches Ziel war es mich näher mit den Technologien bzw. Tools und Frameworks rund um .NET und C# auseinanderzusetzen. Dieses Ziel wurde erreicht, wenngleich zu einer marktreifen Applikation noch viel Inhalt fehlt, wie etwa Testing Mechanismen, Datenbankmigrationen etc. Würde mich wer fragen ob ich ein neues Projekt in Angular und Nest.js aufsetzen würde oder mit .NET und Blazor WASM dann wäre meine Antwort ganz klar ersteres, da hier doch einiges gefühlt einfach leichter und verständlicher zu implementieren ist sowie die Entwicklung schneller abläuft.

Beitrag kommentieren

(*) Pflichtfeld