FixFlow
Eine Lager-App von Grund auf erneuert
FixFlow ist die Lager-App von AMIT für Autohändler. Mitigate hat sie als native Android-App komplett neu gebaut; seit dem 28. August 2026 steht sie im Google Play.
KotlinJetpack ComposeClean ArchitectureRoomKtorKoin

Ausgangslage
Ausgangslage
FixFlow arbeitet mit AutoMaster zusammen. Die Lagermitarbeitenden geben damit auf Handscannern Ersatzteile aus und nehmen sie an, inventarisieren und drucken Etiketten. Die App entstand 2021, und nach fünf Jahren wurde es immer mühsamer, sie zu pflegen und weiterzuentwickeln.
AMIT brauchte eine App, die sich schnell weiterentwickeln lässt und auf die sich die Mitarbeitenden eine ganze Schicht lang verlassen können.
Aufwendige und fehleranfällige Entwicklung
Jede Änderung war heikel: In der App überlagerten sich drei verschiedene Gestaltungsmuster, die Fachlogik steckte im Bildschirmcode, und einzelne Dateien umfassten über 1000 Zeilen. Eine Korrektur konnte unvermittelt eine ganz andere Funktion zerstören.
Kein Sicherheitsnetz
Es gab weder automatisierte Tests noch eine statische Codeanalyse. Störungen fielen deshalb zuerst den Mitarbeitenden im Tagesgeschäft auf und nicht der Entwicklung vor der Freigabe.
Unverständliche Fehlermeldungen
Im Fehlerfall bekamen die Nutzerinnen und Nutzer technischen Codetext zu sehen, mit dem sie nichts anfangen konnten; einzelne Fehler legten die App vollständig lahm.
Im Alltag unzuverlässig
Große Belege mit rund 300 Positionen brachten die App zum Absturz, durch Serverfehler gingen Daten verloren oder verdoppelten sich, und eine mitten im Vorgang abbrechende Sitzung zwang zur erneuten Anmeldung.
Die Lösung
Neu gebaut, nicht geflickt
Mitigate hat FixFlow von Grund auf neu gebaut: eine moderne native Android-App in Kotlin mit einer Oberfläche in Jetpack Compose. Fachlogik, Daten und Oberfläche sind strikt von den Hardware-Anbindungen getrennt (Scanner, Drucker, Signale und Systemaktualisierungen), sodass sich jeder Teil unabhängig von den anderen ändern lässt.
Clean Architecture, überprüft statt vereinbart
Daten, Fachlogik und Bildschirme liegen für jede Funktion in eigenen Schichten. Damit die Architektur eingehalten wird, prüfen das bei jedem Build 12 eigens geschriebene Analyseregeln automatisch.
Änderungen schnell und ohne Risiko
Die App ist in 99 einzelne Geschäftsvorfälle und 19 Bildschirmsteuerungen zerlegt. Neue Funktionen kommen neben den bestehenden Code, statt sich durch ihn hindurchzuziehen - so lassen sich Verbesserungen zügig ausliefern, ohne Bewährtes zu gefährden.
Schrittweise und sichere Einführung
Die neue App wurde Funktionsblock für Funktionsblock eingeführt, während die alte Version weiterlief. Alle Einstellungen wurden beim ersten Start automatisch übernommen, niemand musste sein Gerät neu einrichten.
Von der ersten Codezeile bis zum Google Play - 14 Monate
Jun 2025
Start der Funktionsentwicklung
Aug 2025
Erste Testversion (4.0)
Mär 2026
Warenausgabe neu gebaut, automatisierte Tests eingeführt
Jun 2026
Version 5.0 mit Entwürfen im Offline-Betrieb
Aug 2026
Veröffentlichung im Google Play ohne einen einzigen Befund der Codeanalyse
Arbeitsabläufe
Die wichtigsten Arbeitsabläufe
Alle Abläufe wurden daran ausgerichtet, wie im Lager tatsächlich gearbeitet wird - samt der Rückmeldungen aus fünf Jahren Betrieb.
Ausgabe, Vorkommissionierung und Rücknahme
Alle drei Vorgänge beginnen auf demselben Bildschirm. Der Beleg lässt sich schnell über die Auftrags- oder Bestellnummer finden, und eine Rücknahme startet man, indem man den Artikel einfach scannt. Steht ein Artikel in mehreren Zeilen, wird die Zeile nur einmal gewählt.


Wareneingang
Die Liefernummer findet man, indem man sie scannt. Die Pause zwischen zwei Scans liegt bei 0,5 Sekunden, und noch nicht übertragene Daten bleiben auch dann sicher auf dem Gerät, wenn die Netzverbindung abreißt.


Barcodes scannen
Drei verschiedene Ton- und Vibrationssignale - für Bestätigung, Warnung und Fehler - sind gut auseinanderzuhalten, ohne den Blick vom Regal zu nehmen. Scanner von Zebra, Newland und Honeywell laufen über eine gemeinsame Anbindung.



Inventur
Für einen Artikel lassen sich Mengen an bis zu drei Lagerplätzen gleichzeitig erfassen. Die Zählungen bleiben bis zur Übertragung sicher auf dem Gerät, und ein Scan wird nicht mehr doppelt gezählt.
Ersatzteile und Etiketten
Ersatzteile lassen sich über Text oder Barcode suchen, und Etiketten gehen ohne weitere Netzwerkeinrichtung direkt an den mobilen Zebra-Drucker.
Anmeldung und Sprachen
Der Lizenzschlüssel lässt sich vom QR-Code einlesen, die Filiale direkt in der App wechseln, und die Oberfläche gibt es in vier Sprachen: Lettisch, Englisch, Litauisch und Bulgarisch.
Technologien
Die Technologien hinter FixFlow
Die neue App steht auf einem einheitlichen, aktuellen Kotlin-Fundament. In der alten Version kamen Android-Werkzeuge aus mehreren Generationen nebeneinander zum Einsatz.
Oberfläche
Alte App
XML-Layouts und Fragments, vermischt mit Jetpack Compose
Neue App
In der ganzen App ausschließlich Jetpack Compose
Architektur
Alte App
Codeschichten nur per Absprache, ohne verbindliche Prüfung
Neue App
Clean Architecture je Funktion, beim Build automatisch geprüft
Speicherung auf dem Gerät
Alte App
SQLDelight; Entwürfe mit der Cache-Datenbank vermischt
Neue App
Room 2.8: eigener Cache und migrierte Entwurfsdatenbank
Automatisierte Tests
Alte App
Keine
Neue App
764 Tests
Statische Analyse
Alte App
Keine
Neue App
Automatische Codeprüfung (detekt) ohne zugelassene Befunde, mit 12 eigenen Architektur- und Compose-Regeln
Werkzeuge
Alte App
Kotlin 2.2, AGP 8.7, Gradle 8.11, SDK 35
Neue App
Kotlin 2.4, AGP 9.3, Gradle 9.7, SDK 37
| Bereich | Alte App | Neue App |
|---|---|---|
| Oberfläche | XML-Layouts und Fragments, vermischt mit Jetpack Compose | In der ganzen App ausschließlich Jetpack Compose |
| Architektur | Codeschichten nur per Absprache, ohne verbindliche Prüfung | Clean Architecture je Funktion, beim Build automatisch geprüft |
| Speicherung auf dem Gerät | SQLDelight; Entwürfe mit der Cache-Datenbank vermischt | Room 2.8: eigener Cache und migrierte Entwurfsdatenbank |
| Automatisierte Tests | Keine | 764 Tests |
| Statische Analyse | Keine | Automatische Codeprüfung (detekt) ohne zugelassene Befunde, mit 12 eigenen Architektur- und Compose-Regeln |
| Werkzeuge | Kotlin 2.2, AGP 8.7, Gradle 8.11, SDK 35 | Kotlin 2.4, AGP 9.3, Gradle 9.7, SDK 37 |
Zum Scannen dienen die Broadcast-Anbindungen der Hersteller (Zebra DataWedge, Newland, Honeywell); Etiketten druckt das Gerät direkt über Zebra PrintConnect.
Das Ergebnis
Das Ergebnis
Die neue App steht seit dem 28. August 2026 im Google Play. Der größte Gewinn ist die Haltbarkeit und Wartbarkeit des Systems - Änderungen und Verbesserungen lassen sich jetzt schnell und sicher ausliefern, ohne den laufenden Betrieb zu stören.
764
automatisierte Tests in 83 Quelldateien
0
Befunde der Codeanalyse - schon die kleinste Abweichung blockiert die Freigabe
12
eigene Architekturregeln
~28
Compose-UI-Regeln für die Prüfung des Bildschirmcodes
Seit dem Start der App ist keine einzige Meldung über doppelte Zählungen eingegangen - in der alten Version haben sich die Mitarbeitenden regelmäßig darüber beschwert.
Eine Störung zu beheben dauert jetzt Tage, nicht Monate
Bearbeitungsdauer vergleichbarer Fehler und Verbesserungen in Jira (vom Eingang der Meldung bis zur Lösung):
Alte App
Mengenfeld im Wareneingang reagiert nicht auf manuelle Korrektur
70 TageEinstellung für den automatischen Ziffernblock im Wareneingang wirkt nicht
83 TageAbsturz beim Laden eines umfangreichen Wareneingangsbelegs
51 Tage
Neue App
Lagerplatz im Wareneingang verschwindet nach dem Hinzufügen eines Kommentars
7 TageEtikettendruck sperren, bis der Server die Daten bestätigt
5 TageNoch nicht übertragene Daten bei Netzabbruch sichern
7 Tage