Der Ansatz
Umgesetzt ist die App als eine einzige Flutter-Codebasis für iOS und Android. Die Fachlogik – Buchungen, Schichten, Rollenlogik, Darstellung – existiert damit genau einmal, und beide Plattformen bekommen dieselbe Änderung zur selben Zeit. Plattformspezifisch bleibt vor allem das, was tatsächlich am Betriebssystem hängt: Standortberechtigungen, Verhalten im Hintergrund, Energiesparregeln. Diese Teile sind hinter einer schmalen Schnittstelle gekapselt, sodass der Rest der Anwendung nicht wissen muss, auf welcher Plattform er gerade läuft.
Daten und Authentifizierung liegen in der Google Cloud. Die Identität stammt aus der Authentifizierung, die Rollenzuordnung hängt am Backend – nicht am Gerät und nicht an einer im Client gesetzten Variable. Die serverseitigen Regeln entscheiden pro Anfrage, welche Buchungen, Schichten und Standorte eine Rolle lesen oder ändern darf. Die rollenabhängige Oberfläche ist damit eine Projektion desselben Rechtemodells und nicht dessen Durchsetzung: Was die App einer Rolle nicht zeigt, wäre für sie serverseitig ohnehin nicht abrufbar.
Die Echtzeit-Übersicht über Schichten und Buchungen entsteht aus derselben Datenschicht. Clients hängen an aktualisierten Datenständen, statt in Intervallen nachzufragen – das hält die Ansicht aktuell, ohne dass jede geöffnete App im Minutentakt Anfragen erzeugt. Für eine Führungsrolle bedeutet das eine Übersicht, die sich mitbewegt; für die Architektur bedeutet es, dass die Rechteregeln auch für laufende Abonnements greifen müssen und nicht nur für einzelne Abrufe.
Das Geo-Fencing sitzt als optionale Schicht darüber: Standorte werden definiert, und wo die Option aktiv ist, wird eine Buchung an den passenden Standort gebunden. Optional ist dabei bewusst gewählt und nicht als Kompromiss gemeint – es gibt Einsatzorte, an denen eine zuverlässige Ortung schlicht nicht verfügbar ist. Dass Authentifizierung, Datenhaltung, Echtzeit-Verteilung und Skalierung von verwalteten Cloud-Diensten kommen, ist die Voraussetzung dafür, dass eine Anwendung dieser Größe ohne großen Betriebsapparat entwickelt und dauerhaft gepflegt werden kann: Der Betriebsaufwand bleibt dort, wo er automatisierbar ist.