Skip to content

Repository files navigation

StatFlow

StatFlow

Native iOS-App für Umami und Plausible Analytics.

Platform Swift Xcode License Version

Features

  • Multi-Account-Unterstützung: Verwalte mehrere Analytics-Konten verschiedener Anbieter in einer App
  • Echtzeit-Dashboard: Besucher, Seitenaufrufe, Absprungrate und Sitzungsdauer auf einen Blick
  • Detaillierte Analysen: Top-Seiten, Referrer, Geografie, Geräte und Browser
  • Periodenvergleich: Beliebige Zeiträume vergleichen (Woche, Monat, Jahr)
  • Events & Reports: Custom Events, Funnel-Analysen, UTM-Tracking, Goals und Attribution
  • Home-Screen-Widgets: Schneller Blick auf die wichtigsten Statistiken direkt vom Home Screen
  • Push-Benachrichtigungen: Tägliche oder wöchentliche Zusammenfassungen
  • Offline-Modus: Gecachte Daten als Fallback auch ohne Netzwerk verfügbar
  • Dark Mode: Vollständige Unterstützung für den Dunkelmodus
  • Lokalisierung: Deutsch und Englisch

Unterstützte Anbieter

Anbieter API Funktionen
Umami REST API Alle Funktionen inkl. Sessions, Journeys, Share-Links
Plausible Stats API v2 Dashboard, Diagramme, Metriken (keine Einzelsitzungen)

Server-Kompatibilität

Anbieter Benötigte Version Anmerkung
Umami ab 3.0 (self-hosted) Ab v3 liefert /api/websites/{id}/stats flache Werte plus comparison. Umami 2.x verwendet ein anderes Antwortformat und wird nicht unterstützt.
Plausible ab CE 2.1 bzw. Cloud Erst ab CE 2.1 gibt es die Query-API POST /api/v2/query. Zusätzlich wird GET /api/v1/stats/realtime/visitors für Echtzeitdaten genutzt.

Wichtige Einschränkungen:

  • Umami Cloud wird derzeit nicht unterstützt. Die App meldet sich über POST /api/auth/login an und nutzt ein Bearer-Token. Umami Cloud (api.umami.is) verlangt stattdessen einen x-umami-api-key-Header. Es funktionieren also nur selbst gehostete Instanzen.
  • Plausibles Sites-API ist Cloud/Enterprise-only. Websites anlegen und löschen, Ziele verwalten und Share-Links erzeugen laufen über /api/v1/sites…. Diese Routen gibt es in der Community Edition nicht — auf CE-Servern meldet die App das als nicht verfügbar. Dashboard, Diagramme und alle Statistiken funktionieren dort uneingeschränkt.
  • Die Plausible-Stats-API v1 ist zwar als „legacy" markiert, in CE 3.2 aber weiterhin verfügbar; ein Abschalttermin ist nicht angekündigt.

Architektur

StatFlow verwendet MVVM mit klarer Schichttrennung und einem einheitlichen Provider-Protokoll, das Umami und Plausible abstrahiert.

┌─────────────────────────────────────────┐
│         Presentation Layer              │
│   SwiftUI Views + ViewModels            │
│   (Dashboard, Detail, Reports, Events)  │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│           Service Layer                 │
│   UmamiAPI · PlausibleAPI (actors)      │
│   AccountManager · AnalyticsManager     │
│   NotificationManager                   │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│            Model Layer                  │
│   Codable structs für API-Responses     │
│   AnalyticsWebsite · AnalyticsStats     │
│   AnalyticsMetricItem · DateRange       │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│         Infrastructure Layer            │
│   KeychainService · AppDelegate         │
│   AnalyticsCacheService                 │
│   BackgroundTasks · UserNotifications   │
└─────────────────────────────────────────┘

Kernprinzipien:

  • AnalyticsProvider-Protokoll: Einheitliche Schnittstelle für Umami und Plausible — ViewModels arbeiten provider-agnostisch
  • Actor-based Concurrency: UmamiAPI und PlausibleAPI sind Swift Actors für thread-sichere API-Kommunikation
  • Credential-Isolation: Zugangsdaten in der Keychain pro Account-ID gespeichert (nicht in UserDefaults)
  • Keine externen Dependencies: Ausschließlich Apple Frameworks (SwiftUI, Foundation, WidgetKit, Security, UserNotifications, BackgroundTasks)

Screenshots

Dashboard Website-Detail
Dashboard Website-Detail
Echtzeit Widgets & Benachrichtigungen
Echtzeit-Ansicht Widgets und Benachrichtigungen

Voraussetzungen

  • iOS 18.0+
  • Eigene Umami-Instanz ab Version 3.0 (self-hosted) oder eigene Plausible-Instanz ab CE 2.1 bzw. Plausible Cloud

Details und Einschränkungen siehe Server-Kompatibilität.

Installation

App Store

Verfügbar im App Store: StatsFlow

Im App Store heißt die App StatsFlow — der Name StatFlow war dort bereits vergeben. Repository, Quellcode und Dokumentation verwenden weiterhin StatFlow.

Selbst kompilieren

  1. Repository klonen:
    git clone https://github.com/Revisor01/StatFlow.git
  2. InsightFlow.xcodeproj in Xcode 16+ öffnen (der Xcode-Zielname stammt aus der Entwicklungshistorie der App und wurde bei der Umbenennung zu StatFlow beibehalten)
  3. Bundle ID in den Signing-Einstellungen auf die eigene Team-ID anpassen
  4. Auf Gerät oder Simulator bauen und ausführen

Konfiguration

  1. App starten
  2. Analytics-Konto mit Server-URL und API-Zugangsdaten hinzufügen
  3. Websites auswählen und Statistiken anzeigen
  4. Optional: Widgets auf dem Home Screen hinzufügen und Benachrichtigungen aktivieren

Mitwirken

Beiträge sind willkommen! Pull Requests können gerne eingereicht werden.

Lizenz

Dieses Projekt steht unter der GNU General Public License v3.0 — siehe LICENSE für Details.

Danksagung

Hinweis

Dies ist eine inoffizielle Companion-App. StatFlow ist nicht mit Umami Software, Inc. oder Plausible Insights OU verbunden oder von diesen unterstützt.

Datenschutzerklärung

Die vollständige Datenschutzerklärung ist auch unter simonluthe.de/apps/statflow/datenschutz verfügbar.

Verantwortlicher

Simon Luthe Suderstrasse 18 25779 Hennstedt Deutschland

E-Mail: mail@simonluthe.de Telefon: +49 151 21563194 Web: simonluthe.de

Datenverarbeitung

StatFlow speichert und verarbeitet folgende Daten ausschließlich lokal auf deinem Gerät:

  • URLs deiner Umami- oder Plausible-Instanzen
  • API-Zugangsdaten (Token, Benutzername/Passwort) für die Authentifizierung
  • App-Einstellungen und Präferenzen
  • Gecachte Analytics-Daten für den Offline-Modus

Es werden keine Daten an externe Server übertragen. Die gesamte Kommunikation erfolgt ausschließlich zwischen deinem iOS-Gerät und deinen konfigurierten Analytics-Instanzen.

Keine Tracking- oder Analysedienste

StatFlow verwendet:

  • Keine Analytics oder Tracking-Tools
  • Keine Werbung
  • Keine Cloud-Dienste
  • Keine Drittanbieter-SDKs, die Daten sammeln

Netzwerkverbindungen

Die App stellt ausschließlich Verbindungen zu den von dir konfigurierten Analytics-Instanzen (Umami oder Plausible) her.

Datenspeicherung

Alle Daten werden lokal in der iOS-Keychain (für Zugangsdaten) bzw. in den App-Einstellungen gespeichert. Bei Deinstallation der App werden alle Daten vollständig entfernt.

Deine Rechte (DSGVO)

Da alle Daten ausschließlich lokal auf deinem Gerät gespeichert werden und keine Übertragung an den Entwickler oder Dritte erfolgt, hast du die volle Kontrolle über deine Daten. Du kannst diese jederzeit durch Löschen der App vollständig entfernen.

Bei Fragen zum Datenschutz kannst du dich jederzeit an die oben genannte Kontaktadresse wenden.

Änderungen

Diese Datenschutzerklärung kann bei Bedarf aktualisiert werden. Die aktuelle Version ist stets in diesem Repository verfügbar.

Stand: März 2026

About

Native iOS app for Umami and Plausible Analytics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages