English
Last updated: 27 October 2026
Privacy policy
Watt Riders is a free indoor-cycling game for the browser and for iPhone, run by Filip Sokolowski, Zaubzerstraße 37, 81677 München, Germany. There is nothing to buy. This policy describes the personal data the game actually processes. It covers the website at https://wattriders.app and the iPhone app that uses the same account and the same server.
1. Controller
Filip Sokolowski, Zaubzerstraße 37, 81677 München, Germany. Email: hello@storyflux.app. Filip Sokolowski is a private individual (Einzelunternehmer) and a small business under § 19 UStG.
2. Your rights
You can ask for access (Art. 15 GDPR), correction (Art. 16), erasure (Art. 17), restriction (Art. 18), and a copy of data you provided (Art. 20). You can object to processing based on a legitimate interest (Art. 21). Where we rely on consent, you can withdraw it for the future (Art. 7 (3) GDPR). Email hello@storyflux.app. Signed-in erasure is on the website (Profile, then Delete account) and in the iPhone app.
3. Complaints
You can complain to a supervisory authority (Art. 77 GDPR). The authority for this operator is Bayerisches Landesamt für Datenschutzaufsicht (BayLDA), Promenade 18, 91522 Ansbach, https://www.lda.bayern.de.
4. What we do not do
Optional analytics, marketing, and media-embed cookies stay off until you turn them on in cookie settings. Until then the game does not load an analytics or advertising service, and it does not set an analytics cookie. There is no payment provider, because there are no purchases. We do not sell personal data. We do not read Apple Health or HealthKit. We do not ask the browser or the iPhone app for your GPS position. The iPhone app has no tracking or advertising SDK. There is no automated decision or profiling under Art. 22 GDPR.
5. Accounts and the session cookie
Playing the game requires an account. This policy, the terms, the imprint, and the support page do not.
Clerk. Sign-in on the website and in the iPhone app uses Clerk (Clerk Inc., United States). Google and Sign in with Apple are the providers offered through Clerk. After Clerk accepts you, the website or the app sends the Clerk session token to our server. We check it with Clerk and then store the Clerk user id, your verified email, your name, and the profile-photo URL Clerk provides. We do not receive your Google password or your Apple ID password. We do not read Gmail, Drive, Calendar, contacts, or Apple Health. Clerk is the hosted sign-in service. Our server still creates the player row and the session cookie described below.
A deployment that is not using Clerk can accept a Google or Apple token directly. The same account fields are stored. Used that way, the Google button is loaded from accounts.google.com and the Apple button from appleid.cdn-apple.com. Apple may send a private relay address instead of your email, and usually does not send a profile photo.
The same email address links a Clerk, Google, and Apple sign-in to one player row. We also store which provider and which provider id belong to that row.
The signed-in session is an httpOnly cookie named wr_session. It holds a random token, not your email. It is SameSite=Lax, lasts 30 days, and is marked Secure on the hosted site. Legal basis for the account and this cookie: Art. 6 (1) (b) GDPR (the account you asked for). The cookie is technically necessary for the signed-in session, § 25 (2) no. 2 TDDDG.
6. Career, rides, and leaderboards
When you are signed in, the career is stored as JSON in our database and a copy stays in this browser. The career contains the display name, handle, country, short bio, jersey colour, the weight and FTP you type in, unit choice, an optional photo you upload (a small JPEG inside the save), season progress, trophies, in-game WAT (not real money), cosmetic items, GPX routes you import, and Just ride summaries. A Just ride summary is the date, duration, distance, average power, and the YouTube video id if you pasted one.
Weight and FTP are numbers you enter so the physics and the rider card work. They are not read from a health app or from HealthKit.
Finished races are also stored as results: route, mode, position, finish time, in-game prize, XP, and a JSON copy of that result. Leaderboards show your handle, display name, route, time, and position to other players.
Legal basis: Art. 6 (1) (b) GDPR.
7. Trainer, heart rate, and Bluetooth
In the browser, a smart trainer, a heart-rate strap, a fan, or a Zwift Ride controller is connected with Web Bluetooth, and only after you pick the device. Live power, cadence, heart rate, and resistance stay in the browser for that ride. Heart rate is not written into the career and is not sent to our database. We do not store a continuous power or cadence file.
Heart rate is health data under Art. 9 GDPR. We process it only when you connect a heart-rate sensor. Connecting the sensor is your explicit consent (Art. 9 (2) (a) GDPR), and it covers only that live session. Disconnecting the sensor, or ending the session, withdraws the consent. We do not build a health profile from it.
If you share a ride, the ghost is your distance along the route about every two seconds, plus your handle, route, and finish time. It is not heart rate and it is not a power trace.
This browser may remember the trainer name, a trainer model label, and similar device preferences so the next connection is quicker. Those values stay on the device. They are not part of the server account.
Power, cadence, speed, and fan control are part of the ride you start. Legal basis: Art. 6 (1) (b) GDPR, and § 25 (2) no. 2 TDDDG for the preferences stored on the device.
8. Live rooms and voice
In a server room, your handle and your distance along the route are shared with the other riders in that room. A position that has not updated for 20 seconds is no longer sent out. Leaving the room deletes that row. Room membership that has not been seen for 45 seconds is treated as gone. Public rooms are listed only for 12 hours after they are created.
A room password, if you set one, is stored as a scrypt hash on the room. We do not store account passwords. There is no password sign-in.
Voice is available only when this deployment has LiveKit configured. The app asks our server for a token and then connects to LiveKit. Microphone audio is relayed to the other people in that room. Watt Riders does not record the call and does not store the audio. The token carries a client id, your display name, and your handle, and it lasts up to six hours. Push-to-talk is the default. Legal basis: Art. 6 (1) (b) GDPR. LiveKit is a US provider. When voice is switched on, audio is processed on the LiveKit server configured for this deployment.
9. Strava
Connecting Strava is optional and is not a way to sign in. We ask only for the activity:write scope. We store the Strava athlete id, access token, refresh token, expiry, and scope so a finished ride can be uploaded as a VirtualRide with a name, elapsed time, distance, and start time. We do not read your existing Strava history. Disconnect on the Profile screen, or delete the account, and those tokens are deleted here. An activity that was already created stays on Strava until you delete it there. Strava’s own policy applies. Legal basis: Art. 6 (1) (b) GDPR and Art. 6 (1) (a) GDPR, because you choose to connect. Disconnecting withdraws that choice.
10. Hosting and the database
The website and the API run on Vercel (Vercel Inc., USA). Delivering a page or an API call means Vercel processes the IP address, date and time, the URL, and the browser’s user-agent. We use that to run and protect the service. We do not keep a separate analytics log. Legal basis: Art. 6 (1) (f) GDPR.
Accounts, careers, and results are stored in Neon serverless Postgres (Neon Tech, Inc., USA). Only our server functions open the database. The browser does not receive the database password.
11. Maps, fonts, and other requests
These requests happen because the game shows a map, a typeface, or a feature you turned on. Game art that ships with the app is stored on our host. Opening the app does not contact the sites those files originally came from. Room QR codes are drawn on your device. No QR-code service is contacted.
- Mapbox (Mapbox Inc., USA). The menu map, and some ride maps, load styles and tiles from Mapbox in your browser. Mapbox receives your IP address and the tiles you view. A public Mapbox token is part of the app. If the elevation proxy fails, the browser also asks Mapbox for terrain-RGB tiles. Legal basis: Art. 6 (1) (b) GDPR for the map that is part of the ride, and Art. 6 (1) (f) GDPR for the decorative splash map.
- Google Fonts. These pages and the app load the Barlow fonts from fonts.googleapis.com and fonts.gstatic.com. Your browser sends your IP address to Google. The fonts are not self-hosted. Legal basis: Art. 6 (1) (f) GDPR.
- Satellite imagery. Sentinel-2 cloudless imagery from EOX (tiles.maps.eox.at, EU) is loaded through our own address. Your browser asks https://wattriders.app, and Vercel fetches the tile. EOX does not receive your account. The tile is a square on the route, not your home.
- Elevation. Mapzen Terrarium tiles are loaded the same way from a public AWS Open Data bucket. The bucket sees Vercel’s request, not your account.
- OpenStreetMap. Land cover is requested through our server, which forwards the query to the public Overpass service at overpass.openstreetmap.fr. Building footprints may also be requested by your browser from overpass-api.de and overpass.kumi.systems and, if those fail, from api.openstreetmap.org. Those services receive your IP address and the map box of the route, not your account. Legal basis: Art. 6 (1) (b) and (f) GDPR. Route shapes for the built-in climbs are already in the app. They are not looked up from your position.
- YouTube. Only if you paste a YouTube link in Just ride and you have allowed media embeds in cookie settings. The player script is not requested before that choice. If you allow it, the app loads the player from youtube.com. Google receives your IP address and the video id. We store that video id in the Just ride summary. Spotify, if an embed is shown later, uses the same media-embed choice. Legal basis: Art. 6 (1) (a) GDPR and § 25 (1) TDDDG. You can withdraw the choice in cookie settings.
12. Data stored only on your device
Besides the session cookie, the browser keeps the career under the key wattriders.save (an older key, peloton-manager.save, is still read if it is present). It also keeps preferences: wattriders.routes, wattriders.mapStyle, wattriders.onboarded, wattriders.trainer.name, wattriders.trainer.model, wattriders.trainerDifficulty, wattriders.controller, wattriders.fan, wattriders.audioMuted, and wattriders.graphics. A sessionStorage flag named wr.reloaded is set once after a failed script load so the page reloads a single time. Cookie settings are stored as wr_consent (a cookie and the same key in local storage): version, time, and the analytics, marketing, and media-embed switches. Necessary stays on. The other three default to off, and a new version asks again. These stay on the device until you clear site data or, for the career, until you use Delete career or Delete account in this browser. Legal basis for the necessary session and for wr_consent: § 25 (2) no. 2 TDDDG. Optional categories: § 25 (1) TDDDG and Art. 6 (1) (a) GDPR. The career and preferences: Art. 6 (1) (b) or (f) GDPR.
13. Sponsors
The shop can show sponsor names. The brands shipped in the game are placeholders, not a checkout, and not an ad network. We do not send your account to a sponsor. In-game WAT cannot be bought with real money.
14. How long we keep it
- Account, career, results, sign-in identities, and Strava tokens: until you delete the account, or until we delete an account that breaks the terms.
- Session: 30 days, or until you sign out or delete the account.
- Live position: deleted when you leave, and no longer sent after 20 seconds of silence.
- Strava connect state (the short OAuth state value): 15 minutes.
- A support email: for as long as it takes to answer, and longer only if we have to keep it.
- iPhone signaling and the live sensor stream: only while that session is open. They are not kept afterwards.
- Hosting logs: kept by Vercel as part of hosting. We do not run a second log archive.
- Cookie choice (wr_consent): until you change it or clear site data. A new version of the banner asks again.
15. Deleting your account
When you are signed in on the website, open Profile and choose Delete account, then confirm. The iPhone app offers the same deletion. Either one asks the server to delete the player row. Sessions are deleted with it. The database then removes the career, race results, sign-in identities, Strava tokens, and pending Strava connect states. Leaderboard rows for that account go away. Rooms you hosted stay available to other riders, but the host handle stored on the room is replaced and the host ghost is removed. On the website the button also clears the career in that browser and signs you out.
You can ask for the same thing by email to hello@storyflux.app from the address on the account. If you used Apple’s hidden email, write from that relay address, or tell us the name on the account and we will ask you to confirm.
Delete career on the Profile screen only clears this browser. It does not delete the server account. An activity already uploaded to Strava is not deleted at Strava.
16. Children
Watt Riders is not directed at children under 16. We do not knowingly keep an account for a child under 16. If you believe we have one, email hello@storyflux.app and we will delete it.
17. International transfers
Clerk (Clerk Inc.), Vercel, Google, Apple, Mapbox, Neon, Strava, and LiveKit are US providers, or groups that can process data in the United States. Where the provider is certified under the EU-US Data Privacy Framework (adequacy decision (EU) 2023/1795 of 10 July 2023), we rely on that decision. Otherwise we rely on standard contractual clauses, including for Clerk. EOX is in the EU. The OpenStreetMap and Overpass servers named above are public instances and may be in the EU. The iPhone app uses this same server, so the same transfers apply.
18. iPhone app
The Watt Riders iPhone app is a companion to the browser game. Sign-in is Sign in with Apple or Google through Clerk, on the same account as the website. You can delete that account in the iOS app, on the website Profile screen, or by email as described above.
The app connects over Bluetooth Low Energy to a smart trainer, a power meter, a cadence or speed sensor, a heart-rate strap, or a smart fan, and only after you choose the device. Those readings are processed on the phone. They are streamed peer-to-peer with WebRTC to the browser session you are signed into. The phone and the browser find each other through signaling at /api/bridge, which runs on Vercel and uses our Neon database. Signaling and the live readings are not stored after that session ends. The bridge is not a recording of the ride.
The app does not use HealthKit, does not read Apple Health, does not use location, and does not include a tracking SDK, an advertising SDK, or an analytics SDK. There are no purchases. Heart rate from a strap is the same Art. 9 processing as in the browser: explicit consent when you connect the sensor, and only for the live session. Support is at https://wattriders.app/support.
19. Changes
A new version of this policy is published on this page with a new date.
Deutsch
Stand: 27. Oktober 2026
Datenschutzerklärung
Diese Datenschutzerklärung informiert über die Verarbeitung personenbezogener Daten bei Watt Riders gemäß Datenschutz-Grundverordnung (DSGVO) und Telekommunikation-Digitale-Dienste-Datenschutz-Gesetz (TDDDG). Watt Riders ist ein kostenloses Indoor-Cycling-Spiel im Browser und auf dem iPhone, betrieben von Filip Sokolowski, Zaubzerstraße 37, 81677 München, Deutschland. Es gibt keine Käufe. Die Erklärung gilt für die Website https://wattriders.app und für die iPhone-App, die dasselbe Konto und denselben Server nutzt.
1. Verantwortlicher
Filip Sokolowski, Zaubzerstraße 37, 81677 München, Deutschland. E-Mail: hello@storyflux.app. Filip Sokolowski ist Einzelunternehmer und Kleinunternehmer gemäß § 19 UStG.
2. Ihre Rechte
Sie haben das Recht auf Auskunft (Art. 15 DSGVO), Berichtigung (Art. 16), Löschung (Art. 17), Einschränkung der Verarbeitung (Art. 18) und Datenübertragbarkeit (Art. 20). Gegen eine Verarbeitung auf Grundlage eines berechtigten Interesses können Sie Widerspruch einlegen (Art. 21). Erteilte Einwilligungen können Sie jederzeit mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3 DSGVO). Schreiben Sie an hello@storyflux.app. Die Löschung eines angemeldeten Kontos geht auf der Website (Profil, dann Delete account) und in der iPhone-App.
3. Beschwerderecht
Sie können sich bei einer Datenschutz-Aufsichtsbehörde beschweren (Art. 77 DSGVO). Für uns zuständig: Bayerisches Landesamt für Datenschutzaufsicht (BayLDA), Promenade 18, 91522 Ansbach, https://www.lda.bayern.de.
4. Was wir nicht tun
Optionale Analyse-, Marketing- und Medieneinbettungs-Cookies bleiben aus, bis Sie sie in den Cookie-Einstellungen einschalten. Bis dahin lädt das Spiel keinen Analyse- und keinen Werbedienst und setzt kein Analyse-Cookie. Einen Zahlungsdienst gibt es nicht, weil es nichts zu kaufen gibt. Wir verkaufen keine personenbezogenen Daten. Wir lesen Apple Health und HealthKit nicht aus. Wir fragen weder den Browser noch die iPhone-App nach Ihrem GPS-Standort. Die iPhone-App hat kein Tracking- und kein Werbe-SDK. Eine automatisierte Entscheidungsfindung oder ein Profiling nach Art. 22 DSGVO findet nicht statt.
5. Konto und Sitzungs-Cookie
Das Spiel setzt ein Konto voraus. Diese Erklärung, die Nutzungsbedingungen, das Impressum und die Support-Seite nicht.
Clerk. Die Anmeldung auf der Website und in der iPhone-App läuft über Clerk (Clerk Inc., Vereinigte Staaten). Google und „Sign in with Apple“ werden über Clerk angeboten. Nachdem Clerk Sie annimmt, sendet die Website oder die App das Clerk-Sitzungstoken an unseren Server. Wir prüfen es bei Clerk und speichern dann die Clerk-Nutzer-ID, Ihre bestätigte E-Mail, Ihren Namen und die Profilbild-URL, die Clerk liefert. Ihr Google-Passwort und Ihr Apple-ID-Passwort erhalten wir nicht. Gmail, Drive, Kalender, Kontakte und Apple Health lesen wir nicht. Clerk ist der gehostete Anmeldedienst. Unser Server legt weiterhin die Spielerzeile und das unten beschriebene Sitzungs-Cookie an.
Eine Installation ohne Clerk kann ein Google- oder Apple-Token direkt annehmen. Gespeichert werden dieselben Kontodaten. In diesem Fall wird der Google-Button von accounts.google.com und der Apple-Button von appleid.cdn-apple.com geladen. Apple kann eine private Relay-Adresse statt Ihrer E-Mail senden und schickt meistens kein Profilbild.
Dieselbe E-Mail-Adresse verknüpft eine Clerk-, Google- und Apple-Anmeldung mit derselben Spielerzeile. Zusätzlich speichern wir, welcher Anbieter und welche Anbieter-ID zu dieser Zeile gehören.
Die angemeldete Sitzung ist ein httpOnly-Cookie namens wr_session. Es enthält ein Zufallstoken, nicht Ihre E-Mail. Es ist SameSite=Lax, gilt 30 Tage und ist auf der gehosteten Website mit Secure markiert. Rechtsgrundlage für Konto und Cookie: Art. 6 Abs. 1 lit. b DSGVO. Das Cookie ist für die Anmeldung technisch erforderlich, § 25 Abs. 2 Nr. 2 TDDDG.
6. Karriere, Fahrten und Bestenlisten
Wenn Sie angemeldet sind, liegt die Karriere als JSON in unserer Datenbank, eine Kopie bleibt in diesem Browser. Darin stehen Anzeigename, Handle, Land, Kurztext, Trikotfarbe, das von Ihnen eingegebene Gewicht und die FTP, die Einheit, ein optionales selbst hochgeladenes Foto (ein kleines JPEG in der Sicherung), Saisonstand, Trophäen, das Spielgeld WAT (kein echtes Geld), Kosmetik, von Ihnen importierte GPX-Strecken und Zusammenfassungen von „Just ride“. Eine solche Zusammenfassung enthält Datum, Dauer, Strecke, Durchschnittsleistung und die YouTube-Video-ID, falls Sie einen Link eingefügt haben.
Gewicht und FTP sind Werte, die Sie eintippen, damit Physik und Fahrerkarte stimmen. Sie werden nicht aus einer Gesundheits-App und nicht aus HealthKit gelesen.
Beendete Rennen speichern wir zusätzlich als Ergebnisse: Strecke, Modus, Platz, Zeit, Spielpreis, XP und eine JSON-Kopie des Ergebnisses. Bestenlisten zeigen anderen Spielern Handle, Anzeigename, Strecke, Zeit und Platz.
Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO.
7. Trainer, Herzfrequenz und Bluetooth
Im Browser werden Smarttrainer, Herzfrequenzgurt, Ventilator oder Zwift Ride über Web Bluetooth verbunden, und nur nachdem Sie das Gerät auswählen. Leistung, Trittfrequenz, Herzfrequenz und Widerstand bleiben für die Fahrt im Browser. Die Herzfrequenz wird nicht in die Karriere geschrieben und nicht an unsere Datenbank gesendet. Eine fortlaufende Leistungs- oder Trittfrequenzdatei speichern wir nicht.
Die Herzfrequenz ist ein Gesundheitsdatum nach Art. 9 DSGVO. Wir verarbeiten sie nur, wenn Sie einen Herzfrequenzsensor verbinden. Diese Verbindung ist Ihre ausdrückliche Einwilligung (Art. 9 Abs. 2 lit. a DSGVO) und gilt nur für die laufende Sitzung. Den Sensor trennen oder die Sitzung beenden widerruft die Einwilligung. Ein Gesundheitsprofil erstellen wir daraus nicht.
Wenn Sie eine Fahrt teilen, ist der Ghost Ihre Distanz auf der Strecke etwa alle zwei Sekunden, dazu Handle, Strecke und Zielzeit. Das ist keine Herzfrequenz und keine Leistungsdatei.
Dieser Browser kann den Trainernamen, eine Modellbezeichnung und ähnliche Geräte-Einstellungen merken, damit die nächste Verbindung schneller geht. Diese Werte bleiben auf dem Gerät. Sie gehören nicht zum Serverkonto.
Leistung, Trittfrequenz, Geschwindigkeit und Ventilatorsteuerung gehören zu der Fahrt, die Sie starten. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO, und § 25 Abs. 2 Nr. 2 TDDDG für die auf dem Gerät gespeicherten Einstellungen.
8. Live-Räume und Sprache
In einem Server-Raum werden Handle und Distanz auf der Strecke mit den anderen Fahrern in diesem Raum geteilt. Eine Position, die 20 Sekunden nicht aktualisiert wurde, wird nicht mehr ausgeliefert. Wer den Raum verlässt, dessen Zeile wird gelöscht. Eine Mitgliedschaft, die 45 Sekunden nicht gesehen wurde, gilt als beendet. Öffentliche Räume stehen nur 12 Stunden nach der Erstellung in der Liste.
Ein Raum-Passwort, falls Sie eines setzen, speichern wir als scrypt-Hash am Raum. Kontopasswörter gibt es nicht. Eine Anmeldung mit Passwort gibt es nicht.
Sprache gibt es nur, wenn auf diesem Server LiveKit eingerichtet ist. Die App holt ein Token von unserem Server und verbindet sich dann mit LiveKit. Das Mikrofon wird an die anderen Personen in diesem Raum durchgereicht. Watt Riders nimmt das Gespräch nicht auf und speichert den Ton nicht. Das Token enthält eine Client-ID, Ihren Anzeigenamen und Ihr Handle und gilt bis zu sechs Stunden. Push-to-talk ist die Voreinstellung. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO. LiveKit ist ein US-Anbieter. Wenn Sprache eingeschaltet ist, wird der Ton auf dem für diese Installation konfigurierten LiveKit-Server verarbeitet.
9. Strava
Strava zu verbinden ist freiwillig und keine Anmeldung. Wir fragen nur den Umfang activity:write ab. Wir speichern die Strava-Athleten-ID, Access-Token, Refresh-Token, Ablauf und Umfang, damit eine beendete Fahrt als VirtualRide mit Name, Dauer, Distanz und Startzeit hochgeladen werden kann. Ihren bisherigen Strava-Verlauf lesen wir nicht. Trennen Sie die Verbindung im Profil oder löschen Sie das Konto, dann löschen wir diese Token hier. Eine bereits bei Strava angelegte Aktivität bleibt dort, bis Sie sie bei Strava löschen. Es gilt die Datenschutzerklärung von Strava. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO und Art. 6 Abs. 1 lit. a DSGVO, weil Sie die Verbindung selbst herstellen. Das Trennen widerruft diese Wahl.
10. Hosting und Datenbank
Website und API laufen bei Vercel (Vercel Inc., USA). Beim Ausliefern einer Seite oder eines API-Aufrufs verarbeitet Vercel IP-Adresse, Datum und Uhrzeit, die aufgerufene Adresse und den User-Agent des Browsers. Das nutzen wir für den Betrieb und den Schutz des Dienstes. Ein separates Analyse-Log führen wir nicht. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.
Konten, Karrieren und Ergebnisse liegen in Neon Serverless Postgres (Neon Tech, Inc., USA). Nur unsere Serverfunktionen öffnen die Datenbank. Der Browser erhält das Datenbankpasswort nicht.
11. Karten, Schriften und weitere Abrufe
Diese Abrufe gibt es, weil das Spiel eine Karte, eine Schrift oder eine von Ihnen eingeschaltete Funktion zeigt. Grafiken, die mit dem Spiel ausgeliefert werden, liegen auf unserem Host. Beim Öffnen werden die Ursprungsseiten dieser Dateien nicht kontaktiert. QR-Codes für Raumlinks entstehen auf Ihrem Gerät. Ein QR-Dienst wird nicht aufgerufen.
- Mapbox (Mapbox Inc., USA). Die Menü-Karte und ein Teil der Fahrt-Karten laden Stile und Kacheln direkt von Mapbox. Mapbox erhält Ihre IP-Adresse und die angesehenen Kacheln. Ein öffentlicher Mapbox-Token steckt in der App. Schlägt der Höhen-Proxy fehl, fragt der Browser Mapbox zusätzlich nach Terrain-RGB-Kacheln. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO für die Karte als Teil der Fahrt, Art. 6 Abs. 1 lit. f DSGVO für die dekorative Startkarte.
- Google Fonts. Diese Seiten und die App laden die Schrift Barlow von fonts.googleapis.com und fonts.gstatic.com. Ihr Browser sendet Ihre IP-Adresse an Google. Die Schriften sind nicht selbst gehostet. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.
- Satellitenbilder. Sentinel-2-Cloudless von EOX (tiles.maps.eox.at, EU) wird über unsere eigene Adresse geladen. Der Browser fragt https://wattriders.app, Vercel holt die Kachel. EOX erhält Ihr Konto nicht. Die Kachel ist ein Quadrat auf der Strecke, nicht Ihr Zuhause.
- Gelände. Mapzen-Terrarium-Kacheln werden auf demselben Weg aus einem öffentlichen AWS-Open-Data-Bucket geladen. Der Bucket sieht die Anfrage von Vercel, nicht Ihr Konto.
- OpenStreetMap. Landbedeckung fragen wir über unseren Server ab, der die Anfrage an den öffentlichen Overpass-Dienst overpass.openstreetmap.fr weitergibt. Gebäudegrundrisse kann Ihr Browser außerdem bei overpass-api.de und overpass.kumi.systems anfragen und, wenn das scheitert, bei api.openstreetmap.org. Diese Dienste erhalten Ihre IP-Adresse und den Kartenausschnitt der Strecke, nicht Ihr Konto. Rechtsgrundlage: Art. 6 Abs. 1 lit. b und lit. f DSGVO. Die Verläufe der eingebauten Anstiege liegen bereits in der App. Sie werden nicht aus Ihrer Position ermittelt.
- YouTube. Nur wenn Sie in „Just ride“ einen YouTube-Link einfügen und Medieneinbettungen in den Cookie-Einstellungen erlaubt haben. Vorher wird das Player-Skript nicht angefordert. Wenn Sie es erlauben, lädt die App den Player von youtube.com. Google erhält Ihre IP-Adresse und die Video-ID. Diese Video-ID speichern wir in der Zusammenfassung. Spotify nutzt dieselbe Auswahl, falls später eine Einbettung gezeigt wird. Rechtsgrundlage: Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TDDDG. Die Auswahl können Sie in den Cookie-Einstellungen widerrufen.
12. Daten nur auf Ihrem Gerät
Neben dem Sitzungs-Cookie hält der Browser die Karriere unter dem Schlüssel wattriders.save (ein älterer Schlüssel, peloton-manager.save, wird noch gelesen, wenn er vorhanden ist). Außerdem Einstellungen: wattriders.routes, wattriders.mapStyle, wattriders.onboarded, wattriders.trainer.name, wattriders.trainer.model, wattriders.trainerDifficulty, wattriders.controller, wattriders.fan, wattriders.audioMuted und wattriders.graphics. Ein sessionStorage-Merker namens wr.reloaded wird einmal gesetzt, wenn ein Skript nicht lädt, damit die Seite genau einmal neu geladen wird. Die Cookie-Auswahl liegt als wr_consent (Cookie und derselbe Schlüssel im lokalen Speicher): Version, Zeitpunkt und die Schalter für Analyse, Marketing und Medieneinbettungen. Notwendig bleibt an. Die anderen drei sind standardmäßig aus, und eine neue Version fragt erneut. Das bleibt auf dem Gerät, bis Sie die Website-Daten löschen oder, für die Karriere, bis Sie in diesem Browser „Delete career“ oder „Delete account“ nutzen. Rechtsgrundlage für die notwendige Sitzung und für wr_consent: § 25 Abs. 2 Nr. 2 TDDDG. Optionale Kategorien: § 25 Abs. 1 TDDDG und Art. 6 Abs. 1 lit. a DSGVO. Karriere und Einstellungen: Art. 6 Abs. 1 lit. b oder lit. f DSGVO.
13. Sponsoren
Der Shop kann Sponsorennamen zeigen. Die mitgelieferten Marken sind Platzhalter, keine Kasse und kein Werbenetz. Wir geben Ihr Konto nicht an einen Sponsor weiter. Das Spielgeld WAT kann man nicht mit echtem Geld kaufen.
14. Speicherdauer
- Konto, Karriere, Ergebnisse, Anmelde-Identitäten und Strava-Token: bis Sie das Konto löschen, oder bis wir ein Konto löschen, das gegen die Nutzungsbedingungen verstößt.
- Sitzung: 30 Tage, oder bis Sie sich abmelden oder das Konto löschen.
- Live-Position: beim Verlassen gelöscht und nach 20 Sekunden ohne Update nicht mehr ausgeliefert.
- Strava-Verbindungsstatus (der kurze OAuth-State): 15 Minuten.
- Eine Support-E-Mail: solange die Antwort braucht, und länger nur, wenn wir sie aufbewahren müssen.
- iPhone-Signalisierung und der Live-Sensorstrom: nur solange diese Sitzung offen ist. Danach werden sie nicht aufbewahrt.
- Hosting-Logs: bei Vercel im Rahmen des Hostings. Ein zweites Log-Archiv betreiben wir nicht.
- Cookie-Auswahl (wr_consent): bis Sie sie ändern oder die Website-Daten löschen. Eine neue Version des Banners fragt erneut.
15. Konto löschen
Wenn Sie auf der Website angemeldet sind, öffnen Sie Profile und wählen Delete account, dann bestätigen Sie. Die iPhone-App bietet dieselbe Löschung. Beides lässt den Server die Spielerzeile löschen. Die Sitzungen werden mitgelöscht. Die Datenbank entfernt daraufhin Karriere, Rennergebnisse, Anmelde-Identitäten, Strava-Token und offene Strava-Verbindungszustände. Bestenlisteneinträge dieses Kontos entfallen. Räume, die Sie eröffnet haben, bleiben für andere Fahrer bestehen, der dort gespeicherte Host-Handle wird ersetzt und der Host-Ghost wird entfernt. Auf der Website löscht der Button außerdem die Karriere in diesem Browser und meldet Sie ab.
Dasselbe können Sie per E-Mail an hello@storyflux.app von der Adresse des Kontos verlangen. Wenn Sie Apples versteckte E-Mail nutzen, schreiben Sie von dieser Relay-Adresse, oder nennen Sie den Namen des Kontos; wir bitten Sie dann um eine Bestätigung.
Delete career im Profil löscht nur diesen Browser. Das Serverkonto bleibt. Eine bereits zu Strava hochgeladene Aktivität wird bei Strava nicht gelöscht.
16. Kinder
Watt Riders richtet sich nicht an Kinder unter 16 Jahren. Wir speichern nicht wissentlich ein Konto für ein Kind unter 16. Wenn Sie meinen, dass wir eines haben, schreiben Sie an hello@storyflux.app, und wir löschen es.
17. Drittlandtransfer
Clerk (Clerk Inc.), Vercel, Google, Apple, Mapbox, Neon, Strava und LiveKit sind US-Anbieter oder Konzerne, die Daten in den USA verarbeiten können. Soweit der Anbieter unter dem EU-US Data Privacy Framework zertifiziert ist (Angemessenheitsbeschluss (EU) 2023/1795 vom 10. Juli 2023), stützen wir uns darauf. Andernfalls auf Standardvertragsklauseln, auch für Clerk. EOX sitzt in der EU. Die oben genannten OpenStreetMap- und Overpass-Server sind öffentliche Instanzen und können in der EU stehen. Die iPhone-App nutzt denselben Server, also gelten dieselben Übermittlungen.
18. iPhone-App
Die Watt-Riders-iPhone-App ist die Begleit-App zum Browserspiel. Die Anmeldung läuft über „Sign in with Apple“ oder Google durch Clerk, mit demselben Konto wie auf der Website. Das Konto können Sie in der iOS-App löschen, auf der Website unter Profil, oder per E-Mail, wie oben beschrieben.
Die App verbindet sich über Bluetooth Low Energy mit einem Smarttrainer, einem Leistungsmesser, einem Trittfrequenz- oder Geschwindigkeitssensor, einem Herzfrequenzgurt oder einem smarten Ventilator, und nur nachdem Sie das Gerät auswählen. Diese Messwerte werden auf dem Telefon verarbeitet. Sie werden per WebRTC direkt (Peer-to-Peer) an die Browser-Sitzung gestreamt, in der Sie angemeldet sind. Telefon und Browser finden sich über die Signalisierung unter /api/bridge. Die läuft auf Vercel und nutzt unsere Neon-Datenbank. Signalisierung und die Live-Messwerte werden nach Ende dieser Sitzung nicht gespeichert. Die Bridge ist keine Aufzeichnung der Fahrt.
Die App nutzt HealthKit nicht, liest Apple Health nicht, nutzt den Standort nicht und enthält kein Tracking-, Werbe- oder Analyse-SDK. Käufe gibt es nicht. Die Herzfrequenz eines Gurts ist dieselbe Verarbeitung nach Art. 9 wie im Browser: ausdrückliche Einwilligung, wenn Sie den Sensor verbinden, und nur für die laufende Sitzung. Support: https://wattriders.app/support.
19. Änderungen
Eine neue Fassung dieser Erklärung veröffentlichen wir auf dieser Seite mit neuem Stand.