Short version: this website has no public accounts or advertising cookies. Its page-view and download counters store daily totals without IP addresses or visitor identifiers. Voluntary feedback is visible only to the project owner. App messages include a random installation ID; website messages do not. The website form loads Cloudflare Turnstile only after your agreement. Hosting and map providers process the technical request data described below. Rider profiles and ride recordings stay on your computer; the feedback feature adds none of this data.
1. Controller. The controller under the GDPR is Tobias Kloos, Rankestrasse 7, 80796 Munich, Germany, reachable at wattsoever.cc@gmail.com. See the legal notice above. No data protection officer has been appointed; contact the controller directly.
2. Website hosting. This site is hosted on Cloudflare Workers (Cloudflare, Inc.). When you visit, Cloudflare processes your IP address and technical request data (including browser, time and requested page) to deliver the site and defend against attacks. Our Workers application does not deliberately log visitor request bodies or IP addresses; Cloudflare may process and retain service/security data under its own policies. Legal basis: Art. 6 (1)(f) GDPR (legitimate interest in secure, efficient delivery). The site does not use advertising cookies. Cloudflare security features may use technical cookies or device signals; website feedback additionally uses Turnstile as described in section 11. See
Cloudflare's privacy policy.
3. Usage statistics. This site counts its own page views, on its own infrastructure and without any third-party analytics service. For each page request the server increments one daily total per page, country (derived by Cloudflare from your IP address at request time), operating-system family (Windows, macOS, Linux, iOS, Android or other, derived from the browser's user-agent header) and referring website (domain only). Only these totals are stored. The records contain no IP address, user-agent string, full referrer URL, cookie or identifier that could link them to you or your device. Legal basis: Art. 6 (1)(f) GDPR (legitimate interest in understanding how the site is used). These aggregate counters do not write an identifier to your device. This does not describe the separate security processing in sections 2 and 11.
4. Downloads. Installers are served from this domain; the files are stored with Cloudflare, Inc. (R2 object storage) and pass through the same infrastructure as the pages. Each whole-file download request is counted in the same aggregated way as in section 3, with one daily total per version, platform and country. This lets us compare requests by release and country, without knowing by whom. A counted request does not prove that a transfer completed. Legal basis: Art. 6 (1)(f) GDPR.
5. Fonts and icons. The typefaces Big Shoulders Display, Figtree and DM Mono are self-hosted and delivered from this website's own origin; the Remix Icon symbols are embedded in the pages themselves. No font CDN or third-party font or icon provider receives data.
6. Videos and images on the home page. The home page uses prerecorded app demonstrations and still images served from this website through Cloudflare. It does not render a live map or request tiles from OpenFreeMap or AWS in your browser. The hero video plays while visible and pauses when offscreen or the page is hidden. Feature videos load when you open their tile. With reduced motion enabled, still images replace the videos. Cloudflare processes the delivery requests as described in section 2. Map providers used by the desktop app are described in section 7.
7. The app itself. WATTSOEVER runs locally. Rider profiles, workouts, saved routes and ride recordings stay on your device. GPX import downloads any missing one-degree Mapzen Skadi elevation tiles from AWS Open Data and keeps them on your computer. Elevations are sampled and smoothed locally; the app does not send individual route coordinates to an elevation API. AWS receives the requested geographic tile names, your IP address and normal technical request data, which can indicate the region of your route. When an app update improves elevation processing, older imported profiles may be recalculated at startup using the same cache after licence acceptance. A new import can use the elevation cache offline when all needed tiles are present. Route import also attempts to cache AWS terrain tiles along the route. Map and 3D views request map tiles from OpenFreeMap and terrain tiles from AWS during use; those providers technically receive your IP address and standard request data. The app loads only the OpenFreeMap basemap tiles it shows and keeps them locally; it never prefetches OpenFreeMap areas. This is separate from the AWS terrain corridor cache attempted at import. Map sources you add yourself are loaded directly from the provider you entered, under that provider's terms. Their configured URLs and any keys in them are saved locally with your map settings; their tiles are not added to the app's managed offline tile cache. Offline, dark and light maps use cached areas in 2D; other layers use a plain 2D route drawing. During online tile failures, healthy layers remain available while affected sources recover automatically. After successful import, the saved route and workout can be ridden offline. Strava is contacted when you connect your profile or open an upload, including the optional after-ride setting. The app opens strava.com in its own window, you sign in directly with Strava, and the app selects the ride's FIT file and pre-fills the upload form for you to review and save. Sign-in sessions are stored separately per rider profile on your machine. On macOS versions before 14, isolated sign-in storage is temporary and you need to sign in again after closing the Strava window. If enabled in Settings, the app checks wattsoever.cc/release.json at startup after license acceptance; CHECK NOW also requests it. Cloudflare receives your IP address and standard request data, but no rider data or installation identifier. Development builds skip release checks. Updates are never downloaded or installed automatically. The app has no integrated Komoot connection. The app does not send ride or profile data to a WATTSOEVER server. The app's
license agreement lists these services in section 5.
8. Transfers to third countries. Cloudflare, Inc. and Amazon Web Services, Inc. are US providers; requests can involve processing outside the EEA. Cloudflare's
Customer DPA describes its Data Privacy Framework participation (section 6.4) and Standard Contractual Clauses for restricted transfers (section 6.2). The DPA is incorporated into its
Self-Serve Subscription Agreement, section 6.1, where applicable. The
AWS privacy notice also describes AWS's Data Privacy Framework participation. OpenFreeMap is operated by Hyperknot Software Kft. in Hungary (EU); its
privacy policy says it may use Cloudflare as a CDN. Strava, Microsoft, your chosen map providers and Google's Gmail service for contact email process data under their respective privacy notices. These services do not provide an EU-only processing guarantee through WATTSOEVER; consult the linked provider notices for their processing locations, recipients and transfer arrangements.
9. Storage periods. Aggregated website totals in sections 3 and 4 are kept indefinitely. Voluntary feedback (section 11) is removed from the active database by daily cleanup when its UTC receipt date is at least 180 days old and can be deleted earlier by the owner. Deleted records may remain in Cloudflare's recovery backups for the provider's recovery window (currently seven days on D1 Free). Restoring a backup requires rerunning cleanup and repeating intervening deletions before the inbox is reopened. Provider request data is subject to the providers' own retention policies; we do not promise provider invisibility. If you email wattsoever.cc@gmail.com, your address, message and any attachments are processed to answer your enquiry (Art. 6 (1)(f) GDPR). Email is handled through Google Gmail; see
Google's privacy policy. Enquiries are kept only as long as needed to deal with them, subject to any applicable legal retention duty.
10. Your rights. You have the rights of access, rectification, erasure, restriction, portability and objection under Art. 15–21 GDPR, and the right to complain to a supervisory authority. You may object to the processing in sections 2, 3, 4 and 6 based on Art. 6 (1)(f) GDPR. You may withdraw feedback consent at any time without affecting the lawfulness of earlier processing. Contact wattsoever.cc@gmail.com, quoting the receipt number for website feedback or the feedback ID for app messages where useful; the app ID identifies an installation, not a person. Resetting it does not erase earlier feedback, and the old ID should be retained if you need to refer to earlier submissions.
11. Voluntary feedback from the app and website. In the app, selecting SEND consents to processing your message and category (Problem, Idea or Other), app version, operating-system family and a cryptographically random feedback ID, solely to review problems and suggestions for this hobby project (Art. 6 (1)(a) GDPR). Using the app does not require feedback. The app shows its version and OS before sending. The ID is generated locally on first feedback use, persists across ordinary updates and is independent of rider profiles within that installation. It is not derived from hardware, OS, IP address or rider data; Settings → FEEDBACK → RESET ID breaks future association. It is transmitted only with explicit feedback, never with update checks or other requests. There is no email/contact field, account, attachment or automatic log upload, and the app adds no rider, profile, route, ride, user-agent, hardware fingerprint, location or usage data. Please exclude names, contact details and health information from your text. Messages go to wattsoever.cc through Cloudflare Workers and D1; Cloudflare necessarily receives your IP and technical request data, but the feedback database stores neither. A receipt key, status and UTC receipt date support the owner's private inbox. The feature is pseudonymous, not anonymous. Drafts stay in the open app window's memory until it is reloaded or the app closes; an unsuccessful or unconfirmed send is never automatically retried. Cloudflare's processing and possible international transfers are described in its
privacy policy and
Customer DPA. The contractual safeguards described in section 8 apply to our use of Cloudflare; they do not replace the separate information about Turnstile's own processing below. Website feedback is also voluntary: selecting SEND FEEDBACK consents to reviewing your category and message (Art. 6 (1)(a) GDPR). It uses the same restricted inbox and daily cleanup based on the UTC receipt date after 180 days. The website form sends your category, message and a single-use anti-bot token. The database records the source as Website; app version, operating system and installation ID are not collected for website submissions. No durable browser identifier is created. The form loads Cloudflare Turnstile only after you select AGREE & CONTINUE, with your consent under Art. 6 (1)(a) GDPR and, where applicable, section 25 (1) TDDDG. No Turnstile script or widget is loaded by this form before that choice. It processes IP address, TLS fingerprint, browser user-agent and site context. Cloudflare acts as processor for protecting this form and as a separate controller for improving its bot detection. Cloudflare states its own legitimate-interest basis for improvement. Your choice is not stored across page visits; leave or reload the form to stop using the check and withdraw consent for future activation, without affecting earlier processing. The token is verified server-side and not stored; the verification request does not include your message. Turnstile pre-clearance is disabled. See the
Turnstile Privacy Addendum for provider processing, and Cloudflare's privacy policy for retention and international transfers. Our 180-day feedback retention does not describe Cloudflare's own retention. The form retains an unconfirmed draft only in the open page and never retries automatically. Closing or reloading the page loses the draft.
Data attribution: map tiles OpenFreeMap © OpenMapTiles, map data © OpenStreetMap contributors (ODbL); terrain tiles © Mapzen (Terrarium, via AWS); route elevations © Mapzen (Skadi tiles from AWS, sampled and smoothed locally). Prerecorded map views were rendered with MapLibre GL JS (BSD-3-Clause).