Rechtliches: Datenschutz + Impressum aktualisiert — SW by-v442, APP_VER 421
Impressum: TMG→DDG, OS-Plattform + VSBG-Hinweis, zweites Kontaktmedium. DSE: privater Datenschutz-Abschnitt, KI (lokal + Claude Sonnet Fallback mit SCCs), Push (FCM/APNS), Webcal, Referral, EXIF/GPS, Routen, Widerruf Art.7(3), BayLDA, Passphrase statt Passwort.
This commit is contained in:
parent
e35a7a2692
commit
e62d94546b
4 changed files with 152 additions and 75 deletions
|
|
@ -3,7 +3,7 @@
|
|||
Router, State-Management, Navigation, Initialisierung.
|
||||
============================================================ */
|
||||
|
||||
const APP_VER = '420'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
const APP_VER = '421'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
|
||||
const App = (() => {
|
||||
|
||||
|
|
|
|||
|
|
@ -4,100 +4,164 @@
|
|||
|
||||
window.Page_datenschutz = (() => {
|
||||
|
||||
function init(container) {
|
||||
const umamiSection = `
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Nutzungsanalyse (Umami)</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
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.
|
||||
Eine Rechtsgrundlage nach Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse) ist
|
||||
gegeben; ein Widerspruch oder Opt-out ist nicht erforderlich, da keine
|
||||
personenbezogenen Daten verarbeitet werden.
|
||||
</p>
|
||||
</section>
|
||||
`;
|
||||
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>
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Verantwortlicher</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
${sec('Verantwortlicher', `
|
||||
<p style="${S.p}">
|
||||
René Degelmann, Ringstr. 26, 85560 Ebersberg<br>
|
||||
E-Mail: <a href="mailto:mail@motocamp.de"
|
||||
style="color:var(--c-primary)">mail@motocamp.de</a>
|
||||
</p>
|
||||
</section>
|
||||
E-Mail: <a href="mailto:mail@motocamp.de" style="${S.a}">mail@motocamp.de</a>
|
||||
</p>`)}
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Welche Daten wir verarbeiten</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
Bei der Registrierung und Nutzung von Ban Yaro werden folgende Daten verarbeitet:
|
||||
</p>
|
||||
<ul style="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)">
|
||||
<li><strong>Accountdaten:</strong> Benutzername, E-Mail-Adresse, Passwort (gehashed)</li>
|
||||
${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>Standortdaten:</strong> Nur wenn du Gassi-Treffen, Giftköder-Meldungen oder die
|
||||
Karte nutzt (jeweils nur nach expliziter Browser-Freigabe)</li>
|
||||
<li><strong>Inhalte:</strong> Tagebucheinträge, Fotos, Forenbeiträge, Chatnachrichten</li>
|
||||
<li><strong>Technische Daten:</strong> IP-Adresse (serverseitig für Sicherheit/Rate-Limiting),
|
||||
<li><strong>Gesundheitsdaten deines Hundes:</strong> Gewicht, Impfungen, Tierarztbesuche, Medikamente (freiwillig, nur für dich sichtbar)</li>
|
||||
<li><strong>Tagebuch & 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 & 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>
|
||||
</section>
|
||||
</ul>`)}
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Rechtsgrundlage</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
${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.
|
||||
</p>
|
||||
</section>
|
||||
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>`)}
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Datenweitergabe</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
${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('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>
|
||||
</section>
|
||||
<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 ausschließlich der Inhalt deiner Anfrage (Prompt-Text) übermittelt —
|
||||
keine Account- oder Profildaten. 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)">
|
||||
KI-Empfehlungen sind Vorschläge und ersetzen keine tierärztliche Beratung.
|
||||
Eine automatisierte Entscheidungsfindung mit rechtlicher Wirkung (Art. 22 DSGVO)
|
||||
findet nicht statt.
|
||||
</p>`)}
|
||||
|
||||
${umamiSection}
|
||||
${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>`)}
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Deine Rechte (DSGVO)</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
${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). Zur Ausübung deiner Rechte
|
||||
wende dich per E-Mail an
|
||||
<a href="mailto:mail@motocamp.de" style="color:var(--c-primary)">mail@motocamp.de</a>.
|
||||
Du hast außerdem das Recht, bei der zuständigen Aufsichtsbehörde Beschwerde einzulegen.
|
||||
</p>
|
||||
</section>
|
||||
(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).
|
||||
Zur Ausübung deiner Rechte wende dich per E-Mail an
|
||||
<a href="mailto:mail@motocamp.de" style="${S.a}">mail@motocamp.de</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>`)}
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Speicherdauer</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
${sec('Speicherdauer', `
|
||||
<p style="${S.p}">
|
||||
Deine Daten werden gelöscht, sobald du deinen Account löschst. Server-Logs
|
||||
werden nach 30 Tagen automatisch gelöscht.
|
||||
</p>
|
||||
</section>
|
||||
werden nach 30 Tagen automatisch gelöscht. Öffentlich gepostete Inhalte
|
||||
(Forenbeiträge, Giftköder-Meldungen) bleiben nach Account-Löschung anonymisiert
|
||||
erhalten, sofern sie für die Community relevant sind.
|
||||
</p>`)}
|
||||
|
||||
<p style="font-size:var(--text-xs);color:var(--c-text-muted);margin:0">
|
||||
Stand: April 2026
|
||||
|
|
@ -105,7 +169,6 @@ window.Page_datenschutz = (() => {
|
|||
|
||||
</div>
|
||||
`;
|
||||
|
||||
}
|
||||
|
||||
function refresh() {}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ window.Page_impressum = (() => {
|
|||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Angaben gemäß § 5 TMG</h2>
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Angaben gemäß § 5 DDG</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
René Degelmann<br>
|
||||
Ringstr. 26<br>
|
||||
|
|
@ -26,7 +26,9 @@ window.Page_impressum = (() => {
|
|||
color:var(--c-text);margin:0 0 var(--space-2)">Kontakt</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
E-Mail: <a href="mailto:mail@motocamp.de"
|
||||
style="color:var(--c-primary)">mail@motocamp.de</a>
|
||||
style="color:var(--c-primary)">mail@motocamp.de</a><br>
|
||||
Kontaktformular: <a href="mailto:mail@motocamp.de"
|
||||
style="color:var(--c-primary)">Nachricht senden</a>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
|
|
@ -40,13 +42,25 @@ window.Page_impressum = (() => {
|
|||
</p>
|
||||
</section>
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Streitschlichtung</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit:
|
||||
<a href="https://ec.europa.eu/consumers/odr" target="_blank" rel="noopener"
|
||||
style="color:var(--c-primary)">https://ec.europa.eu/consumers/odr</a>.<br>
|
||||
Wir sind nicht bereit und nicht verpflichtet, an einem Streitbeilegungsverfahren vor einer
|
||||
Verbraucherschlichtungsstelle teilzunehmen (§ 36 VSBG).
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section style="margin-bottom:var(--space-6)">
|
||||
<h2 style="font-size:var(--text-base);font-weight:var(--weight-semibold);
|
||||
color:var(--c-text);margin:0 0 var(--space-2)">Haftungshinweis</h2>
|
||||
<p style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.7;margin:0">
|
||||
Die Inhalte dieser App wurden mit größtmöglicher Sorgfalt erstellt. Für die Richtigkeit,
|
||||
Vollständigkeit und Aktualität der Inhalte übernehmen wir keine Gewähr. Als
|
||||
Diensteanbieter sind wir gemäß § 7 Abs. 1 TMG für eigene Inhalte verantwortlich.
|
||||
Diensteanbieter sind wir gemäß § 7 Abs. 1 DDG für eigene Inhalte verantwortlich.
|
||||
Für nutzergenerierte Inhalte (z. B. Forenbeiträge, Giftköder-Meldungen) übernehmen wir
|
||||
keine Haftung; diese liegen in der Verantwortung der jeweiligen Nutzer.
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
Offline-Cache + Push Notifications + Tile-Cache
|
||||
============================================================ */
|
||||
|
||||
const CACHE_VERSION = 'by-v441';
|
||||
const CACHE_VERSION = 'by-v442';
|
||||
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
||||
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue