banyaro/backend/static/js/pages/datenschutz.js
rene 9a7f100855 Legal: Widerrufs-Checkbox im Upgrade-Modal + AGB-Abschnitt in Datenschutz
- Upgrade-Modal: Checkbox §356 Abs.4 BGB muss aktiv bestätigt werden,
  "Anfrage senden" bleibt bis dahin deaktiviert
- Akzeptanz-Zeitstempel wird mit der upgradeRequest-Message mitgeschickt
- datenschutz.js: neuer Abschnitt "Abonnement & Kündigung" mit Laufzeit,
  Verlängerung, Zahlung, Kündigung, Erstattung und Widerrufsrecht
2026-05-15 12:06:14 +02:00

290 lines
17 KiB
JavaScript

/* ============================================================
BAN YARO — Datenschutzerklärung
============================================================ */
window.Page_datenschutz = (() => {
const S = {
h2: `font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--c-text);margin:0 0 var(--space-2)`,
p: `font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0`,
ul: `font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:var(--space-2) 0 0;padding-left:var(--space-5)`,
a: `color:var(--c-primary)`,
};
function sec(title, body) {
return `
<section style="margin-bottom:var(--space-6)">
<h2 style="${S.h2}">${title}</h2>
${body}
</section>`;
}
function init(container) {
container.innerHTML = `
<div style="max-width:640px;margin:0 auto;padding:var(--space-6) var(--space-4)">
<h1 style="font-size:var(--text-2xl);font-weight:var(--weight-bold);
color:var(--c-text);margin:0 0 var(--space-6)">Datenschutzerklärung</h1>
${sec('Verantwortlicher', `
<p style="${S.p}">
René Degelmann, Ringstr. 26, 85560 Ebersberg<br>
E-Mail: <a href="mailto:hallo@banyaro.app" style="${S.a}">hallo@banyaro.app</a>
</p>`)}
${sec('Deine Daten gehören dir', `
<p style="${S.p}">
Ban Yaro ist eine private Community-App. Dein <strong>Tagebuch</strong>, deine
<strong>persönlichen Notizen</strong>, <strong>Gesundheitsdaten</strong> deines Hundes,
<strong>eigene Routen</strong> und dein <strong>Nutzerprofil</strong> sind
ausschließlich für dich sichtbar — sie werden weder an andere Nutzer noch an Dritte
weitergegeben. Öffentlich sichtbar sind nur Inhalte, die du bewusst veröffentlichst
(z. B. Forenbeiträge, Giftköder-Meldungen, öffentliche Gassi-Treffen).
</p>`)}
${sec('Welche Daten wir verarbeiten', `
<p style="${S.p}">Bei der Registrierung und Nutzung von Ban Yaro werden folgende Daten verarbeitet:</p>
<ul style="${S.ul}">
<li><strong>Accountdaten:</strong> Benutzername, E-Mail-Adresse, Passphrase (verschlüsselt gespeichert)</li>
<li><strong>Hundeprofil:</strong> Name, Rasse, Alter, Foto (freiwillig)</li>
<li><strong>Gesundheitsdaten deines Hundes:</strong> Gewicht, Impfungen, Tierarztbesuche, Medikamente (freiwillig, nur für dich sichtbar)</li>
<li><strong>Tagebuch &amp; Notizen:</strong> Texte, Fotos, Stimmungseinträge (privat, nur für dich)</li>
<li><strong>Standortdaten:</strong> Nur nach expliziter Browser-Freigabe — für Karte, Gassi-Treffen,
Giftköder-Meldungen, Nearby-Alerts und Routenaufzeichnung. Standortdaten werden nicht dauerhaft
gespeichert, außer du speicherst selbst eine Route oder Meldung.</li>
<li><strong>Routendaten:</strong> Aufgezeichnete Routen (GPS-Wegpunkte) werden nur gespeichert,
wenn du sie explizit speicherst; sie sind standardmäßig privat.</li>
<li><strong>Fotos &amp; EXIF-Daten:</strong> Beim Hochladen von Bildern können GPS-Koordinaten
in den EXIF-Metadaten enthalten sein. Diese werden serverseitig ausgelesen, um Fotos auf der
Karte zu verorten — sofern vorhanden. Die Rohdaten werden nicht separat gespeichert.</li>
<li><strong>Inhalte:</strong> Forenbeiträge, Chatnachrichten, öffentliche Gassi-Treffen</li>
<li><strong>Technische Daten:</strong> IP-Adresse (für Sicherheit und Rate-Limiting, max. 30 Tage),
Browser-Typ</li>
</ul>`)}
${sec('Rechtsgrundlage', `
<p style="${S.p}">
Die Verarbeitung erfolgt auf Basis von Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung)
für alle zur Bereitstellung des Dienstes notwendigen Daten, sowie Art. 6 Abs. 1 lit. a
DSGVO (Einwilligung) für optionale Funktionen wie Standortfreigabe und
Push-Benachrichtigungen. Einwilligungen können jederzeit mit Wirkung für die Zukunft
widerrufen werden (Art. 7 Abs. 3 DSGVO) — einfach die entsprechende Funktion in den
Einstellungen deaktivieren oder die Browser-Freigabe entziehen.
</p>`)}
${sec('Datenweitergabe', `
<p style="${S.p}">
Deine Daten werden nicht an Dritte verkauft oder zu Werbezwecken weitergegeben.
Öffentliche Inhalte (Forum, Wiki, Giftköder-Karte) sind für alle Nutzer sichtbar.
Profile sind standardmäßig nur für registrierte Nutzer sichtbar.
Admins und Moderatoren können gemeldete Inhalte zur Qualitätssicherung einsehen
(Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse an
Plattformsicherheit).
</p>`)}
${sec('Direktnachrichten', `
<p style="${S.p}">
Nachrichten zwischen Nutzern (z. B. zwischen Hundesitter und Hundeeigentümer oder
zwischen Interessenten und Züchtern) werden auf unserem Server gespeichert, bis du
das Gespräch oder deinen Account löschst. Admins können gemeldete Nachrichten zur
Missbrauchsprüfung einsehen (Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse
an Plattformsicherheit). Nachrichten werden nicht an Dritte weitergegeben.
Du kannst Gespräche jederzeit selbst löschen.
</p>`)}
${sec('KI-Funktionen', `
<p style="${S.p}">
Ban Yaro bietet KI-gestützte Funktionen (Trainingsempfehlungen, Terminvorschläge,
Rassen-Informationen). Diese laufen primär auf einer <strong>lokalen KI auf unserem
eigenen Server in Deutschland</strong> — deine Anfragen verlassen dabei nicht unsere
Infrastruktur.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Als Ausweichlösung bei Nichtverfügbarkeit des lokalen Modells wird
<strong>Claude Sonnet 4.6</strong> von Anthropic, PBC (San Francisco, USA) genutzt.
In diesem Fall wird der Inhalt deiner Anfrage übermittelt. Bei Gesundheits- und
Ernährungsberichten kann dies Hundedaten (Name, Rasse, Gewicht, Impfhistorie,
Medikamente, Allergien) als Teil des Anfragetextes umfassen. Die Übermittlung
in die USA erfolgt auf Basis der EU-Standardvertragsklauseln (Art. 46 Abs. 2 lit. c DSGVO).
Datenschutzerklärung von Anthropic:
<a href="https://www.anthropic.com/privacy" target="_blank" rel="noopener"
style="${S.a}">anthropic.com/privacy</a>.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Die <strong>Rassenerkennung per Foto</strong> sendet das hochgeladene Bild direkt an
Claude von Anthropic (USA) zur Analyse — es gibt hierfür keinen lokalen Fallback.
Das Foto wird nicht dauerhaft bei Anthropic gespeichert. Rechtsgrundlage: Einwilligung
gem. Art. 6 Abs. 1 lit. a DSGVO durch aktive Nutzung der Funktion.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Der <strong>KI-Trainer</strong> analysiert deinen bisherigen Trainingsfortschritt
(Übungshistorie, Erfolgsquoten, Streaks) und gibt personalisierte Empfehlungen.
Diese Analyse läuft auf unserem lokalen Server in Deutschland — deine Trainingsdaten
verlassen dabei nicht unsere Infrastruktur. Es findet kein Training oder Fine-Tuning
von KI-Modellen auf Basis deiner Nutzerdaten statt.
</p>
<p style="${S.p};margin-top:var(--space-3)">
KI-Empfehlungen sind Vorschläge und ersetzen keine tierärztliche Beratung.
Eine automatisierte Entscheidungsfindung mit rechtlicher Wirkung (Art. 22 DSGVO)
findet nicht statt.
</p>`)}
${sec('Wetterdaten & Kartendienste', `
<p style="${S.p}">
Die Wetter-Funktion übermittelt auf Wunsch deine GPS-Koordinaten serverseitig an
<strong>Open-Meteo</strong> (Österreich, DSGVO-konform) für die Wettervorhersage.
Für Wetter-Kartenlayer (Regenradar, Temperaturen) werden Kacheln von
<strong>OpenWeatherMap</strong> (OpenWeather Ltd., UK/USA) geladen — dabei wird
dein Browser direkt kontaktiert. Es werden keine Account-Daten übermittelt.
Rechtsgrundlage: Einwilligung gem. Art. 6 Abs. 1 lit. a DSGVO.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Für die automatische Ortsnamens-Ermittlung (z. B. im Wetter-Detail) werden deine
GPS-Koordinaten serverseitig an <strong>Nominatim</strong> der OpenStreetMap Foundation
(UK) übermittelt. Es werden ausschließlich Koordinaten weitergegeben — keine
personenbezogenen Daten.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Datenschutzerklärung Open-Meteo:
<a href="https://open-meteo.com/en/terms" target="_blank" rel="noopener"
style="${S.a}">open-meteo.com/en/terms</a> ·
OpenWeatherMap:
<a href="https://openweathermap.org/privacy-policy" target="_blank" rel="noopener"
style="${S.a}">openweathermap.org/privacy-policy</a> ·
OpenStreetMap/Nominatim:
<a href="https://osmfoundation.org/wiki/Privacy_Policy" target="_blank" rel="noopener"
style="${S.a}">osmfoundation.org</a>
</p>`)}
${sec('Routenvorschläge (OpenRouteService)', `
<p style="${S.p}">
Die Funktion <strong>„Routenvorschläge"</strong> berechnet auf Wunsch einen Rundweg
ausgehend von deinem aktuellen Standort. Dazu werden deine GPS-Koordinaten einmalig
an den Dienst <strong>OpenRouteService</strong> übermittelt, der von
<strong>HeiGIT</strong> am Karlsruher Institut für Technologie (KIT), Deutschland,
betrieben wird. Es werden ausschließlich die Koordinaten übertragen —
keine Account- oder Profildaten. OpenRouteService speichert keine
personenbezogenen Daten dauerhaft.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Die Funktion wird nur aktiv, wenn du deinen Standort im Browser freigibst und
bewusst einen Routenvorschlag anforderst (Einwilligung gem. Art. 6 Abs. 1 lit. a DSGVO).
Der Tagesvorschlag auf der Startseite wird nur berechnet, wenn du eingeloggt bist und
Standortzugriff erteilt hast — das Ergebnis wird lokal zwischengespeichert und
maximal einmal täglich neu abgerufen.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Datenschutzerklärung von OpenRouteService:
<a href="https://openrouteservice.org/privacy-policy/" target="_blank" rel="noopener"
style="${S.a}">openrouteservice.org/privacy-policy</a>
</p>`)}
${sec('Push-Benachrichtigungen', `
<p style="${S.p}">
Wenn du Push-Benachrichtigungen aktivierst, wird ein Abonnement-Token an den
Push-Dienst deines Browsers übermittelt: bei Android/Chrome an
<strong>Firebase Cloud Messaging</strong> (Google LLC, USA), bei iOS/Safari an
<strong>Apple Push Notification Service</strong> (Apple Inc., USA). Diese Dienste
erhalten lediglich den Token und die Benachrichtigung selbst — keine weiteren
Nutzerdaten. Die Übermittlung erfolgt auf Basis deiner Einwilligung
(Art. 6 Abs. 1 lit. a DSGVO), die du jederzeit in den Geräteeinstellungen widerrufen kannst.
</p>`)}
${sec('Kalender-Abo (Webcal)', `
<p style="${S.p}">
Das Kalender-Abo nutzt einen persönlichen Token-Link. Wenn deine Kalender-App
diesen Link regelmäßig abruft, wird dabei deine IP-Adresse an unseren Server
übermittelt. Es werden keine weiteren Daten an Dritte weitergegeben.
</p>`)}
${sec('Einladungslinks (Referral)', `
<p style="${S.p}">
Wenn du Freunde über deinen persönlichen Einladungslink einlädst, wird erfasst,
wie viele Personen sich darüber registriert haben — ohne personenbezogene Daten
der eingeladenen Personen zu speichern. Dir wird lediglich die Anzahl angezeigt.
</p>`)}
${sec('Nutzungsanalyse (Umami)', `
<p style="${S.p}">
Wir verwenden Umami, ein datenschutzfreundliches Analysetool, das ausschließlich auf
unserem eigenen Server betrieben wird. Es werden keine Cookies gesetzt, keine
personenbezogenen Daten erhoben und keine Daten an Dritte weitergegeben.
Erfasst werden lediglich anonyme Seitenaufrufe zur Verbesserung der App
(Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse).
</p>`)}
${sec('Deine Rechte (DSGVO)', `
<p style="${S.p}">
Du hast das Recht auf <strong>Auskunft</strong> (Art. 15), <strong>Berichtigung</strong>
(Art. 16), <strong>Löschung</strong> (Art. 17), <strong>Einschränkung der Verarbeitung</strong>
(Art. 18) sowie <strong>Datenportabilität</strong> (Art. 20). Erteilte Einwilligungen
kannst du jederzeit mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3 DSGVO).
</p>
<p style="${S.p};margin-top:var(--space-3)">
<strong>Datenexport (Art. 20 DSGVO):</strong> Du kannst jederzeit unter
Einstellungen → „Meine Daten exportieren" eine vollständige Kopie deiner
gespeicherten Daten als JSON-Datei herunterladen. Der Export enthält Profildaten,
Hundedaten, Tagebuch, Gesundheitseinträge, Trainingsfortschritt, Ausgaben,
Verhaltensprotokoll, Forum-Beiträge und Gassi-Teilnahmen.
</p>
<p style="${S.p};margin-top:var(--space-3)">
Zur Ausübung weiterer Rechte wende dich per E-Mail an
<a href="mailto:hallo@banyaro.app" style="${S.a}">hallo@banyaro.app</a>.<br><br>
Du hast außerdem das Recht, bei der zuständigen Datenschutz-Aufsichtsbehörde
Beschwerde einzulegen:<br>
<strong>Bayerisches Landesamt für Datenschutzaufsicht (BayLDA)</strong><br>
Promenade 27, 91522 Ansbach<br>
<a href="https://www.lda.bayern.de" target="_blank" rel="noopener"
style="${S.a}">www.lda.bayern.de</a>
</p>`)}
${sec('Abonnement &amp; Kündigung', `
<p style="${S.p}">
Ban Yaro Pro und das Züchter-Paket sind Jahresabonnements mit einer Laufzeit von
12 Monaten ab Freischaltung.
</p>
<p style="${S.p};margin-top:var(--space-3)">
<strong>Laufzeit &amp; Verlängerung:</strong> Das Abonnement läuft 12 Monate ab dem
Tag der Freischaltung. Nach Ablauf verlängert es sich auf unbestimmte Zeit mit einer
Kündigungsfrist von einem Monat zum Monatsende, sofern nicht vorher gekündigt wird
(§&nbsp;309 Nr.&nbsp;9 BGB).
</p>
<p style="${S.p};margin-top:var(--space-3)">
<strong>Zahlung:</strong> Der Jahresbeitrag (29&nbsp;EUR für Pro, 49&nbsp;EUR für
Züchter) wird einmalig für die gesamte Laufzeit im Voraus fällig.
</p>
<p style="${S.p};margin-top:var(--space-3)">
<strong>Kündigung:</strong> Die Kündigung kann jederzeit in den Einstellungen der App
erfolgen. Der Zugang bleibt bis zum Ende der bezahlten Laufzeit erhalten.
</p>
<p style="${S.p};margin-top:var(--space-3)">
<strong>Erstattung:</strong> Bei vorzeitiger Kündigung durch den Nutzer erfolgt keine
anteilige Rückerstattung des Jahresbeitrags. Der Zugang bleibt bis zum Ende der
bezahlten Laufzeit vollständig bestehen.
</p>
<p style="${S.p};margin-top:var(--space-3)">
<strong>Widerrufsrecht:</strong> Da die Nutzung sofort nach Freischaltung beginnt und
der Nutzer dem ausdrücklich zustimmt, erlischt das 14-tägige Widerrufsrecht gemäß
§&nbsp;356 Abs.&nbsp;4 BGB mit Beginn der Nutzung.
</p>`)}
${sec('Speicherdauer', `
<p style="${S.p}">
Deine Daten werden vollständig gelöscht, sobald du deinen Account löschst —
einschließlich Tagebuch, Gesundheitseinträge, Fotos, Forenbeiträge und Hundeprofil.
Es gibt keine anonymisierte Weiterverarbeitung deiner Inhalte nach Account-Löschung.
Server-Logs werden nach 30 Tagen rotiert.
</p>`)}
<p style="font-size:var(--text-xs);color:var(--c-text-muted);margin:0">
Stand: Mai 2026 · Version 2
</p>
</div>
`;
}
function refresh() {}
return { init, refresh };
})();