stefangaller.at

trexpense.png

Trexpense

In Kürze

  • Typ: Flutter App
  • Zeitraum: 2019 – heute
  • Tägliche Nutzer: Rund 700
  • Monetarisierung: Abonnements

Webseite App Store Play Store

Das Problem

Anfang 2019 starteten meine Freundin und ich eine Weltreise. Wir hatten ein Budget angespart und wollten nun für mehrere Monate unterwegs sein. Die Frage war nur, wie schaffen wir es am besten unsere Ausgaben im Blick zu behalten?

Für uns war klar, dass eine App die komfortabelste Lösung für uns war, um alle Kosten zu erfassen. Jedoch waren wir von keiner der vorhandenen Apps überzeugt. Entweder hatten sie keine passende Budget-Funktion, oder die Kategorien stimmten nicht mit unseren Wünschen überein. So beschloss ich, eine App nach genau unseren Anforderungen zu entwickeln.

Wichtig dabei waren uns folgende Features:

  • Offline-fähig: Die App muss auch funktionieren, wenn wir kein Netz haben.
  • Individuelle Kategorien: Wir wollen die Ausgaben kategorisieren können.
  • Währungsumrechnung: Wie viel sind die Ausgaben in Euro?
  • Wer hat gezahlt?: Wir wollen wissen, wer wofür bezahlt hat.
  • Tägliches Budget: Wir wollen für jedes Land ein tägliches Budget festlegen können.

Die Lösung

Mit diesen Anforderungen im Kopf, beschloss ich außerdem ein neues Framework zur Implementierung zu verwenden: Flutter. Davor hatte ich primär für Android entwickelt, aber Cross-Plattform-Frameworks hatten mich immer schon gereizt (und oft enttäuscht).

So wuchs während unserer Reise nach und nach Trexpense (TRavel Expense) heran. Auch wenn vorab nur für unsere eigene Nutzung vorgesehen, beschloss ich die App auch anderen Reisenden über die Stores zur Verfügung zu stellen.

Immer mehr User fanden an Trexpense gefallen und so kamen auch die ersten Anfragen für weitere Funktionen.

Um das Projekt zu finanzieren, begann ich auch an einer Pro-Version zu arbeiten. Diese Version beinhaltete zusätzliche Funktionen wie Statistiken und war zu Beginn als separate bezahlte App verfügbar.

Nach und nach wuchs die App immer weiter und veränderte sich stetig. Neben der PRO-Version wurde ein In-App-Kauf und später ein Abo-Modell für kontinuierliche Einnahmen eingeführt. Von der ursprünglichen Flutter Version 1.0 ist Trexpense mittlerweile bei Version 3.29 angekommen.

2025 ist bereits Version 9 von Trexpense in den Stores gelandet und beinhaltet eine riesige Anzahl an Features für Reisende:

  • Erfassung von Ausgaben nach Kategorien, Reisenden und Zahlungsmittel
  • Synchronisierung von Reisen zwischen verschiedenen Usern
  • Flexible Reisebudgets
  • Währungsumrechnung
  • CSV- und PDF-Export
  • Statistiken und Diagramme
  • Kosten zwischen Reisenden aufteilen, Schulden zurückzahlen
  • Ansparen eines Budgets vor der Reise
trexpense-overview.png
Die App überzeugt mit einem schlichten und aufgeräumten Design.

Technische Details

Trexpense verwendet mit Flutter eine Cross-Plattform-Lösung, die es erlaubt, Apps für Android und iOS basierend auf demselben Code zu erstellen. Nur so war es überhaupt möglich, als einzelner Entwickler beide Mobilplattformen gleichzeitig zu bedienen.

State-Management

Als State-Management-Lösung kam zu Beginn des Projekts BLoC zum Einsatz. Später wurde BLoC durch Riverpod abgelöst. Nach viel Recherche und Analyse hat sich nämlich der, in meinem Blogbeitrag beschriebene, Ansatz für mich als praktikabler herausgestellt.

In-App-Verkäufe

Spätestens bei der Umstellung auf In-App-Verkäufe wurde mir klar, dass die Harmonisierung von digitalen Produkten zwischen den verschiedenen Apps (Android und iOS) eine Herausforderung darstellt, weshalb ich dafür auf RevenueCat zurückgegriffen habe. Dies übernimmt die Validierung der Käufe und erlaubt mir unabhängig von der App-Plattform die richtigen Berechtigungen freizuschalten.

Datenbank und Cloud-Speicher

In der Basisversion von Trexpense werden alle Daten lokal am Gerät gespeichert. Dafür kommt die NoSQL-Datenbank Sembast zum Einsatz. Das erlaubt die einfache Anpassung der Datenstruktur ohne Migrationen, jedoch auf Kosten erhöhten Validierungsaufwands.

Seit der Einführung einer Cloud-Option werden die Daten in einer Kombination aus Sembast und Firebase verwaltet. Dadurch behält Trexpense ihren “Offline-First”-Ansatz, kann jedoch zusätzlich eine Datenspeicherung in der Cloud anbieten.

Das habe ich gelernt

Bei einem so lange andauernden Projekt konnte ich natürlich eine unglaubliche Menge an Erfahrung mitnehmen. Durch die eigenverantwortliche Durchführung des kompletten Entwicklungsprozesses von Konzeption über Design und Deployment habe ich die Möglichkeit, alle Aspekte der Softwareentwicklung zu erleben.

Dieses aufgebaute Wissen kann ich nun auch in neue Projekte einbringen. Hier eine Zusammenfassung der wichtigsten Punkte:

trexpense-change.png
Trexpense hat sich mit der Zeit verändert.

Langfristige Wartung und Weiterentwicklung

Durch die ständige Weiterentwicklung der App habe ich viel über Datenmigrationen, Rückwärtskompatibilität und Refactoring gelernt. Dadurch weiß ich, wie man Apps aufbaut, die auch langfristig erfolgreich sein sollen. Einfache Erweiterbarkeit und Stabilität sind dafür ein wichtiger Faktor.

Dabei habe ich unter anderem folgende Probleme erfolgreich gemeistert:

  • Migration zwischen großen Versionssprüngen in Flutter
  • Austausch von nicht mehr gewarteten Abhängigkeiten und
  • Verwendung von neuen Betriebssystemfunktionen (z.B. Widgets)
  • Austausch der State-Management-Lösung (Von BLoC zu Riverpod)

In-App Produkte und Abos

Über die Laufzeit der letzten Jahre hat Trexpense auch die Evolution der Monetarisierung von Apps durchlaufen. War es 2019 noch üblich, zwei Versionen der App (eine kostenlos, eine bezahlt) zu haben, wandelte sich der Trend zu bezahlten Upgrades als In-App-Purchase.

Auch die Transformation zu einem Abo-Modell hat Trexpense 2024 durchlaufen. Die neuen Cloud-Funktionen sind in der App als Subscription freischaltbar.

Für die Verwaltung der Produkte und für die Kaufabwicklung habe ich mit verschiedenen Möglichkeiten experimentiert. Schlussendlich fiel meine Entscheidung für die Verwendung von RevenueCat.

Deployment und Stores

Ein großer Erkenntnisgewinn war für mich auch die Automatisierung des Deployment-Prozesses. Hatte ich zu Beginn des Projekts die neuen Versionen noch manuell in die Stores hochgeladen, habe ich bald erkannt, dass eine Automatisierung die effizientere Variante darstellt.

Mithilfe von Fastlane werden nun die neuesten Versionen automatisiert im App Store und Play Store bereitgestellt.

Kundenservice

Wo viele Nutzer sind, da häufen sich auch die Anfragen. Da die Bewertung der App eine wichtige Rolle für die Sichtbarkeit der App spielt, ist eine schnelle und zufriedenstellende Behandlung von Kritik und Vorschlägen essenziell.

Um den Kundenkontakt bestmöglich zu steuern, habe ich eine eigene Webseite für Trexpense erstellt. Diese beinhaltet eine Funktionsübersicht der App, die Beantwortung von häufig gestellten Fragen sowie eine einfache Möglichkeit zur Kontaktaufnahme.

Die 3 wichtigsten Erkenntnisse für zukünftige Projekte

1. Eine gute Softwarestruktur ist essentiel

Nur, wenn eine App gut strukturiert ist, kann sie auch Jahre später noch einfach um Funktionen erweitert werden.

2. Laufende Verbesserungen statt eines großen Updates

Besser schnell Feedback auf kleine Features bekommen, als ein halbes Jahr an Features entwickeln, die niemand verwendet.

3. Auch ein einzelner Entwickler kann erfolgreich Projekte umsetzen

Dank Cross-Platform-Entwicklung kann ich auch alleine erfolgreich eine App für Android und iOS umsetzen. Schnell, konsistent und kostengünstig.

Dein Partner für App-Entwicklung in Graz.

Jetzt kontaktieren und kostenloses Erstgespräch vereinbaren.

Kontaktiere mich