Datenschutzerklärung
Diese Erklärung beschreibt die BikeOtter-App und die Website bikeotter.app. Sie wurde geschrieben, indem wir gelesen haben, was die Software tatsächlich tut — welche Felder ein Live-Tracking-Punkt enthält, welche Löschroutine ihn wann entfernt, welche Hosts kontaktiert werden — statt nach einer Vorlage. Wo eine Grenze als Zahl angegeben ist, ist es die Zahl aus dem Code.
Version 1.1 · zuletzt aktualisiert am 9. August 2026 · gilt für die App und für diese Website
Die Kurzfassung
- Es gibt keine Analyse-Tools und kein Crash-Reporting. Kein Google Analytics, kein Firebase, kein Sentry, kein Werbe- oder Attributions-SDK — weder in der App noch auf dieser Website. Nichts hier zählt dich mit.
- Der Großteil der App braucht gar kein Konto. Routenplanung, Routen senden, Fahrten laden, Regeln und Warnungen funktionieren alle ohne Anmeldung. Ein Konto gibt es nur für Live-Tracking, Fahrt-Benachrichtigungen per E-Mail und die Strava-Verbindung.
- Deine Routen, deine Fahrtdateien und deine Stimme bleiben auf dem Telefon. Die Spracherkennung läuft auf dem Gerät; eine Cloud-Sprachstufe gibt es bewusst nicht.
- Live-Tracking ist die eine Funktion, die deine Position veröffentlicht — an jeden, der den Link hat, für die Dauer der Fahrt. Herzfrequenz, Leistung und Trittfrequenz sind standardmäßig aus. Deine Positionspunkte und der Sitzungseintrag werden zusammen gelöscht, 7 Tage nachdem die Fahrt endet oder abläuft.
- Eine Sache tut die App ungefragt: Sie prüft beim Start über Shorebird, ob ein Code-Patch vorliegt, und diese Prüfung lässt sich nicht abschalten. Sie trägt keine Identität, die wir ihr mitgeben — aber sie erreicht einen Server. §10.1 erklärt genau, was wir wissen und was nicht.
- Nichts wird verkauft, vermietet oder zu Werbezwecken weitergegeben. Niemals.
1. Wer verantwortlich ist
Verantwortlicher für die hier beschriebene Verarbeitung im Sinne von Art. 4(7) GDPR ist:
OpenBikeControl UG (haftungsbeschränkt)Ulrichstraße 24
71636 Ludwigsburg, Germany
E-Mail: support@bikeotter.app
Vollständige Firmenangaben stehen im Impressum. Einen gesetzlich vorgeschriebenen Datenschutzbeauftragten gibt es nicht; wende dich für alles auf dieser Seite an die Adresse oben.
2. Was dein Telefon nie verlässt
Folgendes liegt im eigenen Speicher der App auf deinem Gerät und wird von BikeOtter nirgendwohin hochgeladen. Es verlässt das Telefon nur, wenn du es selbst exportierst oder teilst.
- Deine Routenbibliothek. Routen sind Dateien auf dem Telefon — Geometrie plus ein Index. Beim Teilen einer Route entsteht ein eigenständiger Link, der die Route in sich trägt; keine Route wird zum Teilen auf einen Server hochgeladen.
- Deine Fahrten. Vom Radcomputer geladene Fahrten und vom Telefon aufgezeichnete Fahrten werden als FIT- und GPX-Dateien auf dem Gerät gespeichert. Sie verlassen es nur, wenn du sie teilst oder wenn du den Strava-Upload eingeschaltet hast.
- Sprachsteuerung. Die Spracherkennung ist so konfiguriert, dass sie auf dem Gerät läuft, und Befehle werden zuerst von einer Offline-Grammatik interpretiert und dann, falls nötig, von einem Modell auf dem Gerät (Apple Foundation Models oder Gemini Nano). Eine Cloud-Sprach- oder Cloud-Sprachmodell-Stufe gibt es bewusst nicht — kein Audio und kein Transkript wird an irgendeinen Server gesendet.
- Deine Einstellungen, Regeln, gespeicherten Orte und die Konfiguration der Benachrichtigungs-Weiterleitung.
- An den Radcomputer weitergeleitete Benachrichtigungen (nur Android). Wenn du Benachrichtigungszugriff gewährst, liest die App Telefon-Benachrichtigungen, um sie auf dem ELEMNT oder Edge anzuzeigen, und reicht sie direkt über Bluetooth weiter. Ihre Inhalte werden von der App nicht gespeichert und erreichen nie einen Server.
- Alles, was die App mit dem Radcomputer selbst tut — Koppeln, Routen senden, Fahrten laden, Warnungen auf dem Display — läuft über eine direkte Bluetooth-Verbindung zwischen deinem Telefon und deinem Gerät. Keine Hersteller-Cloud und kein BikeOtter-Server sitzt in diesem Pfad.
3. Dein Konto
Ein Konto ist nur für Live-Tracking, Fahrt-Benachrichtigungen per E-Mail und die Strava-Verbindung erforderlich. Alles andere funktioniert ohne Anmeldung.
Anmelden kannst du dich auf zwei Arten: mit einem Magic-Link an deine E-Mail-Adresse oder per Anmeldung mit Strava. Es gibt kein Passwort und kein Profil. Gespeichert wird ein Benutzereintrag bei unserem Backend-Anbieter (Supabase) mit deiner E-Mail-Adresse und Anmelde-Zeitstempeln, plus — bei Strava-Anmeldung — der Strava-Athleten-ID und dem Anzeigenamen.
Deine E-Mail-Adresse dient dazu, dich zu identifizieren, und ihr lokaler Teil (das Stück
vor dem @) wird zum Fahrernamen, den Zuschauer eines Live-Links sehen. Lautet
deine Adresse [email protected], sehen Zuschauer jane.doe. Denk daran,
wenn du wählst, mit welcher Adresse du dich anmeldest.
Um dein Konto und alles, was daran hängt, zu löschen, schreib an support@bikeotter.app von der Adresse, mit der du dich anmeldest. Die Kontolöschung kaskadiert: Live-Tracking-Sitzungen und ihre Positionspunkte, Gruppenfahrten, Nachrichten, die Zuschauer dir geschickt haben, deine gespeicherten Kontakte und ihre Gruppen, die Benachrichtigungseinträge und die Strava-Verbindung gehen alle mit. Einen Selbstbedienungs-Button in der App gibt es noch nicht — die Löschseite nennt die Schritte, die vollständige Liste dessen, was gelöscht wird, und was danach noch aufbewahrt wird.
4. Live-Tracking
Das ist die eine Funktion, die veröffentlicht, wo du bist. Sie ist aus, bis du sie startest, und sie endet, wenn die Fahrt endet.
Was ein geteilter Link ist
Der Start einer Live-Fahrt erzeugt eine Sitzung mit einem Freigabe-Token: 20 Zeichen aus einer kryptografischen Zufallsquelle, was einen Link der Form bikeotter.app/r/<token> ergibt. Jeder, der diesen Link hat, kann zuschauen, ohne Konto und ohne Anmeldung. Der Link ist der Zugangsschlüssel — behandle ihn also wie einen und gib ihn nur an Leute weiter, die wirklich zuschauen sollen. Zuschauern wird nur gezeigt, was unten aufgeführt ist; sie erhalten nie deine E-Mail-Adresse, deine Konto-ID oder den Token einer anderen Sitzung.
Der Browser eines Zuschauers erhält einen kurzlebigen Zugriffstoken, der auf diese eine Sitzung beschränkt und auf sechs Stunden begrenzt ist. Die Datenbank erzwingt das Spalte für Spalte: Der Besitzer der Sitzung und ihr Freigabe-Token sind für Zuschauer überhaupt nicht lesbar.
Die App zeigt dir live, wie viele Personen gerade zuschauen. Wer sie sind, sagt sie dir nicht — es wird keine Zuschauer-Identität erhoben.
Was ein Live-Punkt enthält
Punkte werden während der Fahrt gesendet, gedrosselt nach Zeit und Distanz. Jeder enthält:
| Feld | Gesendet | Anmerkungen |
|---|---|---|
| Breitengrad, Längengrad | Immer | Der Zweck der Funktion. |
| Höhe, verstrichene Zeit, Steigung, Fahrtstatus | Immer | Die Höhe ist, wie hoch über dem Meeresspiegel du bist — die dritte Koordinate
einer Position, die du ohnehin teilst, und derselbe Messwert, aus dem die Steigung
daneben berechnet wird; die beiden werden also nicht getrennt gesendet. Der
Fahrtstatus ist active, paused, auto_paused
oder not_started, damit die Seite PAUSIERT anzeigen kann
statt eines lügenden LIVE-Badges. Alle vier werden unabhängig von den
beiden Schaltern unten gesendet — mit Absicht. |
| Akku schwach | Nur bei schwachem Akku — kein Schalter | Ein Flag, kein Prozentwert — diese Seite erfährt nie, wie viel Akku dir noch bleibt, nur dass er knapp wird. Es wird nur gesendet, während dein Akku schwach ist und du nicht lädst, damit jemand, der deinen Punkt beobachtet, ein sterbendes Telefon von einem verlorenen Signal unterscheiden kann. Solange das der Fall ist, sendet die App deine Position auch seltener. |
| Geschwindigkeit, zurückgelegte Distanz, bisheriger Anstieg, verbleibende Distanz und verbleibender Anstieg, ETA | Nur wenn „Geschwindigkeit teilen“ an ist — standardmäßig an | Schalte ihn aus, und keiner dieser sechs Werte wird überhaupt hochgeladen. „Bisheriger Anstieg“ ist die Gesamtzahl der Meter, die du auf dieser Fahrt geklettert bist — eine andere Zahl als die Höhe oben: das eine ist eine laufende Summe, das andere ist, wo du gerade bist. |
| Herzfrequenz, Leistung, Trittfrequenz | Nur wenn „Herzfrequenz & Leistung teilen“ an ist — standardmäßig aus | Die Herzfrequenz zählt zu den Gesundheitsdaten. Sie wird nur hochgeladen, wenn du diesen Schalter einschaltest, und er startet ausgeschaltet. Die Trittfrequenz — wie schnell du trittst, in Umdrehungen pro Minute — hängt am selben Schalter, obwohl er nicht nach ihr benannt ist: Sie ist ein Sensorwert derselben Art und sagt so viel über deine Anstrengung aus wie die Leistung. Der Schalter in der App sagt das direkt darunter. |
Was die Sitzung selbst enthält
Neben den Punkten: dein Fahrername (siehe §3), der Name der Route, die geplante Routenlinie, ihre Gesamtdistanz, die Koordinaten, an denen die Route beginnt, die beiden Freigabe-Schalter oben, ob Nachrichten aktiviert sind, der Sitzungsstatus und seine Zeitstempel sowie — bei einer Gruppenfahrt — zu welcher Gruppe sie gehört.
Wann sie endet und wann sie gelöscht wird
Eine Sitzung läuft ab, sobald das Erste hiervon eintritt; der Ablauf wird jede Minute geprüft:
- die beim Start festgelegte Ablaufzeit — standardmäßig sechs Stunden;
- 45 Minuten nach dem letzten Punkt oder Keep-alive der App, damit eine vergessene Fahrt nicht den ganzen Abend „live“ bleibt;
- 60 Minuten nach ihrer Erstellung, wenn nie eine Position angekommen ist.
Die Löschung folgt dann automatisch:
- Der Sitzungseintrag wird 7 Tage nach Ende oder Ablauf gelöscht und nimmt alles mit, was noch daran hängt.
- Deine Positionspunkte werden mit ihm gelöscht — dieselben 7 Tage, keinen Moment länger. Früher wurden sie schon nach 24 Stunden bereinigt, vor der Sitzung; jetzt bleiben sie für die gesamte Lebensdauer der Sitzung erhalten, damit eine Fahrt, deren Radcomputer die Aufzeichnung verloren hat, in der App noch aus der Live-Spur wiederhergestellt werden kann. Sonst hat sich an der Löschroutine nichts geändert, und die Obergrenze, wie lange eine geteilte Fahrt gespeichert ist, bleibt unverändert bei 7 Tagen.
Gruppenfahrten funktionieren genauso, sobald die Fahrt läuft: Ein Gruppenlink ist ab dem Start 12 Stunden gültig, fasst höchstens 10 Fahrer, und der Gruppeneintrag wird 7 Tage nach dem Ende gelöscht. Eine im Voraus geplante Fahrt ist anders: Der Link — und die Namen aller, die bereits zugesagt haben — bleibt bis zu 30 Tage lang beitrittsfähig, bevor überhaupt jemand losfährt; die 12-Stunden-Uhr beginnt erst, wenn der erste Fahrer live geht. Beendest du eine Freigabe in der App, stoppt der Upload sofort; die Löschroutinen räumen die gespeicherten Daten dann nach dem Zeitplan oben ab.
5. Nachrichten von Zuschauern
Wenn du Nachrichten aktivierst, kann dir jemand, der deinen Link über eine deiner Benachrichtigungs-E-Mails erreicht hat, kurze Nachrichten schicken, die auf deinem Radcomputer erscheinen. Ein gewöhnlicher Zuschauer, der bloß den Link hat, kann das nicht — zum Senden braucht es einen kontaktgebundenen Token, den nur der per E-Mail verschickte Link trägt.
Eine Nachricht speichert ihren Text, den sendenden Kontakt und einen Zeitstempel. Absender sind auf drei Nachrichten pro Stunde begrenzt. Nachrichten hängen an der Sitzung und werden mit ihr gelöscht — also im selben 7-Tage-Fenster wie in §4. Nachrichten liegen auf dem Server in lesbarer Form; sie sind nicht Ende-zu-Ende-verschlüsselt.
6. Fahrt-Benachrichtigungen per E-Mail
Du kannst Kontakte speichern, damit ihnen beim Start einer Live-Fahrt der Link per E-Mail geschickt wird. Es wird nichts gesendet, wenn du beim Livegehen keine Gruppe auswählst; die Wahl „niemand auf dieser Fahrt“ sendet nichts.
Was pro Kontakt gespeichert wird: die E-Mail-Adresse (kleingeschrieben), ein optionaler Name, ein Abmelde-Token, ein Nachrichten-Token und — falls zutreffend — wann sich die Person abgemeldet hat oder wann Mail an sie endgültig unzustellbar war (Hard Bounce). Kontakte sind nur für dich sichtbar; die Datenbank verweigert anonymen Zugriff auf sie vollständig.
Was die E-Mail enthält und preisgibt: deinen Fahrernamen, Name und Distanz der Route,
den Link zum Zuschauen, wann der Link abläuft, und einen Abmeldelink. Sie wird in unserem
Auftrag von einem Cloudflare Worker von [email protected] gesendet, und ihr
Reply-To ist auf deine eigene E-Mail-Adresse gesetzt, damit ein Empfänger
dir direkt antworten kann — was bedeutet, dass deine Empfänger die Adresse sehen können, mit
der du dich angemeldet hast.
Die Ankunfts-E-Mail (optional und aus, bis du sie einschaltest): Aktivierst du für eine Kontaktgruppe „Sagt Bescheid, wenn du zurück bist“, bekommen die Personen, denen der Link dieser Fahrt geschickt wurde — nur diese, und nur wenn die Link-Mail sie auch erreicht hat — eine kurze Nachricht, wenn die Fahrt endet: dass du fertig bist, Distanz und Fahrzeit, die die Fahrt veröffentlicht hat, die Uhrzeit deiner Ankunft und denselben Link zum Zuschauen. Auf einer Fahrt mit geladener Route gibt es optional zusätzlich eine Vorwarnung etwa fünfzehn Minuten vor der geschätzten Ankunft. Die Distanz steht nur drin, wenn „Geschwindigkeit & Distanz“ für diese Fahrt geteilt wurde: Die Zahlen werden aus dem gelesen, was die Fahrt tatsächlich veröffentlicht hat, nie aus der geplanten Route rekonstruiert. Eine Sitzung, die nur abläuft oder ausläuft, sendet nichts — ein Ablauf ist keine Ankunft. Keine der beiden Nachrichten trägt das Nachrichten-Token, denn die Fahrt ist vorbei.
Limits: höchstens eine E-Mail je Art pro Kontakt und Fahrt — der Link, die optionale Vorwarnung und die Ankunftsnachricht (ein Kontakt kann für dieselbe Sitzung nicht zweimal mit derselben Art angeschrieben werden), höchstens 50 Mitglieder pro Gruppe und höchstens 200 Benachrichtigungs-E-Mails pro Fahrer in rollierenden 24 Stunden.
Abmelden: Jede E-Mail trägt einen Abmeldelink im Footer und die üblichen One-Click-Unsubscribe-Header, sodass auch der „Abmelden“-Button des Mailprogramms funktioniert. Eine Abmeldung braucht kein Konto und stoppt alle weiteren Fahrt-Benachrichtigungen an diese Adresse.
Deine Verantwortung: Wenn du die E-Mail-Adresse einer anderen Person hinzufügst, bittest du uns, jemanden anzuschreiben, der mit uns nie zu tun hatte. Füge nur Personen hinzu, die damit rechnen, von dir zu hören. Kontakte laufen nicht automatisch ab — sie bleiben, bis du den Kontakt oder dein Konto löschst.
7. Strava
Die Strava-Verknüpfung ist optional. Die Autorisierung passiert in deinem System-Browser auf Stravas eigenen Seiten; BikeOtter sieht dein Strava-Passwort nie.
- Angefragte Berechtigungen:
read,read_all,activity:read_allundactivity:write— genug, um deine Routen und Aktivitäten aufzulisten und zu importieren und Fahrten hochzuladen. - Wo die Tokens liegen: Deine Strava-Access- und -Refresh-Tokens werden ausschließlich serverseitig gespeichert, in unserem Backend, und sind für nichts lesbar außer der Serverfunktion, die sie benutzt. Das Telefon hält während des Anmelde-Handshakes nur einen kurzlebigen Wert im Arbeitsspeicher, der nie auf den Datenträger geschrieben wird.
- Was hochgeht: die Fahrtdatei selbst (ein komprimiertes FIT), plus optional Name und Beschreibung, wenn du eine Fahrt hochlädst.
- Was herunterkommt: deine Strava-Routen und -Aktivitäten, GPX-Exporte von Routen und die Positions-/Höhen-/Zeit-Streams einer Aktivität, wenn du sie als Route importierst. Antworten werden deinem Konto zugeordnet zwischengespeichert und nach 48 Stunden gelöscht.
- Trennen widerruft den Token bei Strava und entfernt die gespeicherte Verbindung. Bis du trennst, bleibt der Verbindungseintrag bestehen — er läuft nicht automatisch ab.
Was Strava dann mit deinen Daten macht, regelt Stravas eigene Datenschutzerklärung. Strava ist ein US-Unternehmen, und seine Nutzung bringt eine Übermittlung von Daten in die USA mit sich.
8. Wetter, POI, Geocoding, Routing und Karten
Mehrere Funktionen müssen einen externen Dienst nach einem Ort fragen. Es gibt einen bedeutsamen Unterschied darin, wie gefragt wird:
- Über unser Backend — Wettervorhersagen, POI-Suche entlang einer Route, Geocoding und alles rund um Strava. Dein Telefon fragt unsere Serverfunktion; die Serverfunktion fragt den externen Dienst. Dieser Dienst sieht daher die Koordinaten oder Suchbegriffe, aber nicht deine IP-Adresse.
- Direkt von deinem Telefon — Routenberechnung (BRouter) und Kartenkacheln (der OpenStreetMap-Kachelserver). Diese Dienste erhalten die Anfrage von deinem Gerät, sehen also deine IP-Adresse zusammen mit den Koordinaten oder dem Kartenausschnitt, den du gerade ansiehst, und können sie nach ihren eigenen Richtlinien protokollieren.
Wetter-, POI- und Geocoding-Antworten werden auf unserer Seite zwischengespeichert, damit wiederholte Abfragen nicht erneut fragen: POI-Ergebnisse 24 Stunden, Wetter 2 Stunden, Geocoding etwa eine Woche. Cache-Schlüssel ist der Ort, nicht der Fahrer.
Ein Detail, das man klar aussprechen sollte: Die POI-Suche nutzt die öffentliche Overpass
API auf overpass-api.de, und wenn die nicht erreichbar ist, weicht sie auf
einen öffentlichen Spiegel auf maps.mail.ru aus, betrieben in Russland.
Gesendet werden nur das Suchgebiet und die gesuchten Kategorien, und die Anfrage kommt von
unserem Server, nicht von deinem Telefon.
9. Das Diagnoseprotokoll
Die App führt ein technisches Protokoll, damit Bluetooth- und Support-Probleme meldbar sind.
- Es ist standardmäßig an. Ein Fahrer, der auf ein Problem stößt, hat so ein Protokoll zum Anhängen, ohne die Voraussicht gebraucht zu haben, die Aufzeichnung vorher einzuschalten. Schalte es jederzeit aus unter Einstellungen → Diagnose.
- Passwörter, Tokens und API-Schlüssel werden entfernt, bevor irgendetwas geschrieben wird — ein Bearer-Token, API-Schlüssel, Magic-Link-Token oder OAuth-Code, der irgendwo im Protokoll auftaucht, wird zu einer Einweg-Markierung, nicht zu den Zugangsdaten selbst.
- Es bleibt auf dem Telefon, bis du es an eine Support-Anfrage anhängst. Zwei rotierende Dateien im eigenen Speicher der App; vorher verlässt nichts das Telefon. Es gibt keinen E-Mail-Editor-Schritt — eine Support-Anfrage wird aus der App selbst gesendet, als Nachricht in einem laufenden Support-Thread (siehe den nächsten Punkt). Hängst du das Protokoll dort an, wird es in einen privaten Storage-Bucket hochgeladen, und diese hochgeladene Kopie wird nach 180 Tagen gelöscht. Die Kopie auf dem Telefon kannst du jederzeit löschen, oder das Protokollieren abschalten, unter Einstellungen → Diagnose.
- Eine Support-Anfrage ist ein Thread, keine einmalige E-Mail. Was auch immer du schreibst — mit oder ohne angehängtem Protokoll — wird als Teil einer laufenden Support-Konversation gespeichert, die an dein Konto und deine Anmelde-E-Mail-Adresse gebunden ist. Lesbar ist sie für BikeOtter-Mitarbeiter, die Support-Anfragen beantworten, und für niemanden sonst. Die Konversation selbst bleibt, bis du dein Konto löschst, und wird dann mit ihm gelöscht (siehe die Löschseite); ein hochgeladenes Protokoll hat davon unabhängig seine eigene 180-Tage-Frist, unabhängig vom Konto.
- Was drinsteht: App-Version und Build, Telefonmodell, Betriebssystemversion, Sprache und Zeitzone, plus eine technische Spur von Geräteverbindungen und App-Ereignissen. Live-Freigabe-Tokens werden vor dem Schreiben gekürzt. Es kann Positionskoordinaten enthalten — mindestens eine Gerätefunktion protokolliert Breiten- und Längengrad des Fahrers — plus Routenkoordinaten, gespeicherte Orte und Geräteseriennummern. Das wird nicht geschwärzt; behandle ein Diagnoseprotokoll also als Daten über dich und schicke es nur jemandem, dem du vertraust.
10. Drittanbieter, die wir nutzen
Die vollständige Liste externer Dienste, die die App, das Backend und diese Website kontaktieren. Andere gibt es nicht, und insbesondere gibt es nirgendwo im Produkt einen Analyse-, Attributions-, Werbe- oder Crash-Reporting-Dienst.
| Dienst | Wofür | Was er erhält |
|---|---|---|
| Supabase | Datenbank, Anmeldung, Serverfunktionen und der Realtime-Feed hinter dem Live-Tracking | Alles in §3–§8 Beschriebene, das überhaupt gespeichert wird, plus die Verbindungs-Metadaten, die jeder Host sieht. Gehostet in der EU — das Projekt läuft in Supabases Region West EU (Ireland), diese Daten werden also innerhalb des EWR gespeichert. |
| Cloudflare | Hosting für bikeotter.app und die Zuschauerseiten; der Worker, der die Fahrt-Benachrichtigungs-E-Mails sendet | Anfragen an diese Website und an den Mail-Endpunkt, einschließlich IP-Adresse, als Teil des Auslieferns und Schützens. Worker-Anfrageprotokolle werden nach Cloudflares eigenen Voreinstellungen aufbewahrt. |
| Open-Meteo | Wettervorhersagen | Koordinaten und Zeiten, gesendet von unserem Server, nicht von deinem Telefon. |
Overpass API (overpass-api.de, Ausweich-Spiegel auf
maps.mail.ru) | POI-Suche entlang einer Route | Suchgebiet und Kategorien, gesendet von unserem Server. |
Photon (photon.komoot.io) und Nominatim
(nominatim.openstreetmap.org) | Ortsnamen in Koordinaten übersetzen und zurück | Der Suchbegriff oder die Koordinaten, gesendet von unserem Server. |
BRouter (brouter.de) | Berechnung einer Route zwischen deinen Wegpunkten | Deine Wegpunkt-Koordinaten und das gewählte Profil — direkt von deinem Telefon gesendet, er sieht also deine IP-Adresse. |
| OpenStreetMap-Kachelserver | Kartenbilder in der App und auf der Zuschauerseite | Welche Kartenkacheln du gerade ansiehst — direkt angefragt, er sieht also deine IP-Adresse. |
| Strava | Optionaler Routen-/Aktivitäten-Import und Fahrt-Upload | Siehe §7. USA. |
| Shorebird | Over-the-air-Auslieferung von Code-Korrekturen an die installierte App | Eine Update-Prüfung beim Start. Siehe §10.1 — sie ist nicht optional. |
Die App-Stores stehen für sich: Installierst du BikeOtter aus Apples App Store oder von Google Play, gelten zwischen dir und dem Store dessen eigene Konto-, Kauf- und Crash-Reporting-Regelungen, auf die wir keinen Einfluss haben.
10.1 Shorebird, und warum es ungefragt einen Server kontaktiert
BikeOtter wird über Shorebird veröffentlicht, das uns erlaubt, eine Korrektur am Dart-Code der App over the air auszuliefern, zwischen Store-Releases. Es ist der Mechanismus dahinter, wenn ein Patch ohne Store-Update ankommt.
Der Teil, den du wissen solltest: Die App prüft beim Start automatisch, ob ein Patch vorliegt, und es gibt keine Einstellung, um das abzuschalten. Unsere Konfiguration deaktiviert die automatische Prüfung nicht, und die App bietet keinen Opt-out — der einzige Weg, sie zu stoppen, ist, die App nicht zu starten. Wir sagen das lieber klar, als es zu vergraben.
Wir betreiben Shorebirds Server nicht und können nicht beobachten, was sein Updater sendet, denn der Updater steckt in der Laufzeitumgebung der App, nicht in Code, den wir schreiben. Was eine solche Prüfung aber zwangsläufig beinhaltet, ist keine Meinungsfrage: Um überhaupt beantwortet zu werden, muss sie ausweisen, welche App fragt (unsere Shorebird-App-ID, die nicht geheim ist und bei jeder Installation gleich), und welche Version und welcher Patch-Stand bereits installiert ist — und wie jede Netzwerkanfrage erreicht sie Shorebirds Server von deiner IP-Adresse aus. Geh davon aus, dass Shorebird mindestens so viel sehen kann und es womöglich protokolliert, wie jeder Host Anfragen protokolliert.
Zwei Dinge konnten wir nicht klären und werden nicht raten: den genauen Inhalt dieser Anfrage über das Obige hinaus und das Land, in dem seine Server stehen. Brauchst du eines davon vor der Installation, frag uns, und wir holen Shorebirds eigene Antwort schriftlich ein, statt hier zu spekulieren.
Was wir ausschließen können: Die Prüfung ist nicht an dein Konto gebunden, und BikeOtter funktioniert ohne Anmeldung, die Anfrage trägt also keine Identität, die wir ihr mitgegeben haben. Ein Patch ändert den Code der App — nie deine Daten, deine Fahrten oder deine Routen.
11. Telefon-Berechtigungen
Die App fragt so wenig an wie möglich, und jede Berechtigung wird für genau eine Sache benutzt.
| Berechtigung | Warum |
|---|---|
| Bluetooth | Um deinen Radcomputer und deine Sensoren zu finden und mit ihnen zu sprechen. Auf Android ist die Scan-Berechtigung so deklariert, dass daraus nie ein Standort abgeleitet wird. |
| Standort | Ungefährer Standort auf Android, „beim Verwenden der App“ auf iOS: um POIs in deiner Nähe zu suchen und eine Neuberechnung der Route von deinem Standort aus zu starten. Hintergrund-Standort wird auf keiner der beiden Plattformen angefragt. Während einer Fahrt kommt die geteilte Position vom Radcomputer über Bluetooth. |
| Mikrofon und Spracherkennung | Sprachbefehle. Die Erkennung läuft auf dem Gerät; Audio wird nirgendwohin gesendet. |
| Benachrichtigungen | Um die laufende Benachrichtigung der Fahrt und Warnungen anzuzeigen. |
| Benachrichtigungszugriff (nur Android) | Optional. Lässt die App eingehende Telefon-Benachrichtigungen lesen, um sie auf deinem Radcomputer anzuzeigen. Du gewährst ihn selbst in den Systemeinstellungen, und die Inhalte werden nie gespeichert oder hochgeladen. |
| Start beim Hochfahren / Akku-Ausnahme (nur Android) | Damit eine unterbrochene Fahrt nach einem Neustart weiterlaufen kann und nicht mitten in der Fahrt beendet wird. |
Die App fragt nicht nach Fotos, Kamera, der Kontaktliste deines Telefons, dem Kalender oder irgendeiner Werbe-ID, und sie nutzt Apples Tracking-Berechtigung nicht, weil sie nicht trackt.
12. Speicherfristen im Überblick
| Daten | Aufbewahrt |
|---|---|
| Live-Positionspunkte | 7 Tage nach Ende oder Ablauf der Fahrt — gelöscht mit ihrer Sitzung |
| Live-Sitzungseintrag | 7 Tage nach Ende oder Ablauf |
| Gruppenfahrt-Eintrag | 7 Tage nach Ende oder Ablauf |
| Nachrichten von Zuschauern | Gelöscht mit ihrer Sitzung — also innerhalb derselben 7 Tage |
| Wetter-Cache | 2 Stunden |
| POI-Cache | 24 Stunden |
| Geocoding-Cache | 8 Tage |
| Strava-Antwort-Cache | 48 Stunden |
| Kontakte und ihre Benachrichtigungseinträge | Bis du den Kontakt oder dein Konto löschst — kein automatischer Ablauf |
| Strava-Verbindung | Bis du trennst oder dein Konto löschst |
| Kontoeintrag | Bis du uns bittest, ihn zu löschen — siehe wie du dein Konto löschst |
| Support-Konversation (Thread und Nachrichten) | Bis du dein Konto löschst — siehe wie du dein Konto löschst |
| Diagnoseprotokoll | Standardmäßig auf deinem Telefon, automatisch rotiert, jederzeit von dir löschbar; an eine Support-Anfrage angehängt, wird die hochgeladene Kopie 180 Tage mit eigener Frist aufbewahrt, unabhängig vom Konto |
Server- und Plattform-Protokolle unserer Hosting-Anbieter (Supabase, Cloudflare) folgen deren eigenen Aufbewahrungs-Voreinstellungen und können kurzzeitig IP-Adressen enthalten — ein unvermeidbarer Teil des Beantwortens einer Anfrage.
13. Rechtsgrundlagen
- Art. 6(1)(b) GDPR — Erfüllung dessen, worum du gebeten hast. Dich anmelden, eine von dir gestartete Live-Freigabe betreiben, die von dir gewünschten Benachrichtigungs-E-Mails senden, eine Fahrt in ein von dir verknüpftes Strava-Konto hochladen, eine von dir gezeichnete Route berechnen und eine Support-Anfrage mit angehängtem Diagnoseprotokoll senden.
- Art. 9(2)(a) GDPR — ausdrückliche Einwilligung für Gesundheitsdaten. Herzfrequenz und Leistung sind Gesundheitsdaten. Sie werden nur hochgeladen, wenn du „Herzfrequenz & Leistung teilen“ einschaltest; der Schalter ist standardmäßig aus, und Ausschalten stoppt den Upload. Die Trittfrequenz wird unter demselben Schalter hochgeladen. Wir behaupten nicht, dass die Trittfrequenz Gesundheitsdaten im Sinne von Art. 9 ist — sie ist ein Messwert vom Kurbelsensor, nicht von deinem Körper — aber sie gehört zur selben Familie und bekommt denselben Schutz statt eines schwächeren.
- Art. 6(1)(f) GDPR — berechtigte Interessen daran, den Dienst funktionsfähig und missbrauchsfrei zu halten: Ratenbegrenzungen, die Eine-Mail-pro-Kontakt-und-Fahrt-Sperre, Bounce-Behandlung, das minimale Anfrage-Logging unserer Hoster und das standardmäßig aktive Diagnoseprotokoll auf dem Gerät, damit eine Support-Anfrage eines enthalten kann — du kannst es jederzeit unter Einstellungen → Diagnose abschalten.
Eine Einwilligung zu widerrufen ist jederzeit möglich und wirkt für die Zukunft: die Freigabe beenden, den Herzfrequenz-/Leistungs-Schalter ausschalten, das Protokoll abschalten, Strava trennen, den Kontakt löschen.
14. Deine Rechte
Unter der GDPR hast du das Recht auf Auskunft über deine Daten (Art. 15), auf ihre Berichtigung (Art. 16) oder Löschung (Art. 17), auf Einschränkung der Verarbeitung (Art. 18), auf ihren Erhalt in übertragbarer Form (Art. 20) und auf Widerspruch gegen Verarbeitung auf Basis berechtigter Interessen (Art. 21). Wo die Verarbeitung auf Einwilligung beruht, kannst du sie jederzeit widerrufen.
Schreib an support@bikeotter.app, und wir kümmern uns darum. Vieles davon kannst du auch selbst in der App erledigen: eine Freigabe beenden, einen Kontakt löschen, Strava trennen, das Diagnoseprotokoll leeren.
Die Löschung (Art. 17) hat ihre eigene Seite, weil sie das Detail verdient: wie du dein Konto löschst — die Schritte, was damit gelöscht wird, was danach aufbewahrt wird und wie lange.
Wenn du meinst, dass wir hier etwas falsch machen, kannst du dich bei einer Datenschutz-Aufsichtsbehörde beschweren — in der EU bei der an deinem Wohnort, deinem Arbeitsort oder am Ort des mutmaßlichen Verstoßes (Art. 77 GDPR).
15. Diese Website
bikeotter.app ist eine Sammlung statischer Seiten, gehostet auf Cloudflare. Sie setzt keine Cookies, betreibt keine Analyse-Tools und speichert nichts im lokalen Speicher deines Browsers. Es gibt hier nichts, in das man einwilligen müsste — deshalb wirst du auch nicht gefragt.
Jedes Asset, das eine Seite hier braucht, wird von dieser Website selbst ausgeliefert. Die Schriften (Geist und Geist Mono) hosten wir selbst, statt sie von einem Font-CDN zu holen — genau damit das Lesen einer Seite deine IP-Adresse keinem Dritten aushändigt. Es gibt kein eingebettetes Video, keinen Tag-Manager, kein Share-Widget, keinen Webfont-Dienst. Die einzige Partei, die deine Anfrage zwangsläufig sieht, ist Cloudflare, das die Seiten hostet — unvermeidbar, denn irgendetwas muss sie ausliefern.
Der Live-Tracking-Viewer unter bikeotter.app/r/… und der Gruppen-Viewer unter /g/… laden zusätzlich die Daten der geteilten Fahrt von unserem Backend und Kartenkacheln von OpenStreetMap. Das Öffnen eines Viewer-Links hinterlässt bewusst keine Sitzung in deinem Browser: Der verwendete Zugriffstoken wird nur für diesen Besuch im Arbeitsspeicher gehalten und nicht dauerhaft gespeichert. Zuschauer werden gezählt, nicht identifiziert.
Viewer-Links sind per robots.txt von Suchmaschinen ausgeschlossen, und jeder
trägt eine noindex-Anweisung — eine geteilte Fahrt soll also nicht in
Suchergebnissen auftauchen.
16. Kinder
BikeOtter richtet sich nicht an Kinder und ist nicht für die Nutzung durch Personen unter 16 gedacht. Wir erheben wissentlich keine Daten von Kindern. Wenn du glaubst, dass ein Kind die App mit einem Konto benutzt hat, schreib uns, und wir löschen es.
17. Änderungen
Die App ist jung und ändert sich noch. Ändert sich, was sie erhebt, ändert sich diese Seite mit, und Version und Datum oben wandern. Auf wesentliche Änderungen wird in der App hingewiesen, statt sie leise unterzuschieben.
18. Kontakt
Fragen, Anliegen oder eine Korrektur zu etwas auf dieser Seite: support@bikeotter.app.
Siehe auch die Nutzungsbedingungen und den Sicherheitshinweis und das Impressum.