Eine Geschäftsplattform, die Treueprogramme, POS und Filialverwaltung in einem einzigen Ökosystem vereint.
Jedes Café in der Türkei betreibt Treue anders. Stempelkarten, die in Geldbörsen verloren gehen, Apps, die niemand zweimal herunterlädt, Lochkarten von 2003 — fragmentiert und vergesslich. Für den Kunden sind es zehn Cafés, zehn Systeme, keines kommuniziert mit dem anderen.
Für den Geschäftsinhaber ist es schlimmer. POS-System, Treueprogramm, Personalverwaltung, Bestandsverfolgung — vier verschiedene Tools zusammengeklebt. Der Barista um 8 Uhr mit einer Schlange vor der Tür sollte nicht darüber nachdenken müssen, welche App was macht.
Lokal ist eine Plattform, die alles macht. Drei Apps — eine für den Kunden, eine für das Geschäft, eine für Admin — teilen sich einen gemeinsamen Kern. Der Kunde sieht eine Treuekarte pro Geschäft. Das Geschäft erhält ein vollständiges POS, Menüverwaltung, Personalrollen und Echtzeit-Reporting.


Modularer Monolith .NET 10 Backend, Flutter Monorepo mit 3 Apps (lokal-common Shared Package), PostgreSQL-Datenbank und Redis-Cache. Echtzeit-SignalR-Hub.

Generisches RBAC unterscheidet nicht zwischen 'kann Bestellungen dieses Geschäfts verwalten' und 'kann alle Geschäfte verwalten.' Ich habe den Scope direkt in Permission-Keys kodiert — Store.Order.Create vs Business.Order.Read. Ein Lookup, Scope wird aus dem Key abgeleitet.
Der schwierige Teil war nicht das Erstellen des Menüs — sondern es zum Funktionieren zu bringen, wenn ein Unternehmen 5 Filialen hat, die jeweils unterschiedliche Preise für denselben Espresso verlangen, und trotzdem einheitliche Berichte zu generieren.
Wenn ein Kunde einen Espresso für 3,50 kauft, wird dieser Preis für immer in der Bestellung eingefroren — auch wenn sich das Menü morgen ändert. Historische Bestellungen sind unveränderlich.
Ein Barista sieht andere Dinge als ein General Manager. 7 Standard-Rollen, benutzerdefinierte Rollenerstellung und Business/Store-Scoped Berechtigungen stellen sicher, dass jeder Mitarbeiter nur auf das zugreift, was er braucht.
Produkte einmal definiert, jede Filiale legt ihren eigenen Preis fest. Filialebene-Flexibilität ohne das unternehmensweite Reporting zu beeinträchtigen.
Kunden-, Geschäfts- und Admin-Apps teilen sich einen gemeinsamen Kern über das lokal-common-Paket, während jede ihre eigene Benutzererfahrung beibehält.
Das erste Auth-System war zu starr — fest kodierte Rollen, nicht erweiterbare Berechtigungen. Als es Geschäfte daran hinderte, eigene Rollen zu erstellen, habe ich das gesamte System von Grund auf neu gestaltet.
Die Store-Override-Schicht richtig hinzubekommen war schwieriger als erwartet. Jede Abfrage musste sowohl Geschäfts-Defaults als auch Store-Overrides berücksichtigen.
Produktions-Flutter-Apps (Kunde, Geschäft, Admin)
Schnellere Abfrageausführung mit Dapper (~45ms vs EF Core ~80ms)
Granulare Permission-Keys mit 7 Standard-Rollen
Als FAB Coffee im App Store und Play Store bereitgestellt
Lassen Sie uns über Ihr Projekt sprechen.
Kontakt aufnehmen