From e62d94546b8703392386b5dd4593975cd349e0e5 Mon Sep 17 00:00:00 2001 From: rene Date: Mon, 27 Apr 2026 06:31:49 +0200 Subject: [PATCH] =?UTF-8?q?Rechtliches:=20Datenschutz=20+=20Impressum=20ak?= =?UTF-8?q?tualisiert=20=E2=80=94=20SW=20by-v442,=20APP=5FVER=20421?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- backend/static/js/app.js | 2 +- backend/static/js/pages/datenschutz.js | 203 ++++++++++++++++--------- backend/static/js/pages/impressum.js | 20 ++- backend/static/sw.js | 2 +- 4 files changed, 152 insertions(+), 75 deletions(-) diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 363e4a1..bbac37e 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -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 = (() => { diff --git a/backend/static/js/pages/datenschutz.js b/backend/static/js/pages/datenschutz.js index 067ca24..676523a 100644 --- a/backend/static/js/pages/datenschutz.js +++ b/backend/static/js/pages/datenschutz.js @@ -4,100 +4,164 @@ window.Page_datenschutz = (() => { - function init(container) { - const umamiSection = ` -
-

Nutzungsanalyse (Umami)

-

- 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. -

-
- `; + 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 ` +
+

${title}

+ ${body} +
`; + } + + function init(container) { container.innerHTML = `

Datenschutzerklärung

-
-

Verantwortlicher

-

+ ${sec('Verantwortlicher', ` +

René Degelmann, Ringstr. 26, 85560 Ebersberg
- E-Mail: mail@motocamp.de -

-
+ E-Mail: mail@motocamp.de +

`)} -
-

Welche Daten wir verarbeiten

-

- Bei der Registrierung und Nutzung von Ban Yaro werden folgende Daten verarbeitet: -

-
    -
  • Accountdaten: Benutzername, E-Mail-Adresse, Passwort (gehashed)
  • + ${sec('Deine Daten gehören dir', ` +

    + Ban Yaro ist eine private Community-App. Dein Tagebuch, deine + persönlichen Notizen, Gesundheitsdaten deines Hundes, + eigene Routen und dein Nutzerprofil 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). +

    `)} + + ${sec('Welche Daten wir verarbeiten', ` +

    Bei der Registrierung und Nutzung von Ban Yaro werden folgende Daten verarbeitet:

    +
      +
    • Accountdaten: Benutzername, E-Mail-Adresse, Passphrase (verschlüsselt gespeichert)
    • Hundeprofil: Name, Rasse, Alter, Foto (freiwillig)
    • -
    • Standortdaten: Nur wenn du Gassi-Treffen, Giftköder-Meldungen oder die - Karte nutzt (jeweils nur nach expliziter Browser-Freigabe)
    • -
    • Inhalte: Tagebucheinträge, Fotos, Forenbeiträge, Chatnachrichten
    • -
    • Technische Daten: IP-Adresse (serverseitig für Sicherheit/Rate-Limiting), +
    • Gesundheitsdaten deines Hundes: Gewicht, Impfungen, Tierarztbesuche, Medikamente (freiwillig, nur für dich sichtbar)
    • +
    • Tagebuch & Notizen: Texte, Fotos, Stimmungseinträge (privat, nur für dich)
    • +
    • Standortdaten: 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.
    • +
    • Routendaten: Aufgezeichnete Routen (GPS-Wegpunkte) werden nur gespeichert, + wenn du sie explizit speicherst; sie sind standardmäßig privat.
    • +
    • Fotos & EXIF-Daten: 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.
    • +
    • Inhalte: Forenbeiträge, Chatnachrichten, öffentliche Gassi-Treffen
    • +
    • Technische Daten: IP-Adresse (für Sicherheit und Rate-Limiting, max. 30 Tage), Browser-Typ
    • -
    -
+ `)} -
-

Rechtsgrundlage

-

+ ${sec('Rechtsgrundlage', ` +

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. -

-
+ 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. +

`)} -
-

Datenweitergabe

-

+ ${sec('Datenweitergabe', ` +

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). +

`)} + + ${sec('KI-Funktionen', ` +

+ Ban Yaro bietet KI-gestützte Funktionen (Trainingsempfehlungen, Terminvorschläge, + Rassen-Informationen). Diese laufen primär auf einer lokalen KI auf unserem + eigenen Server in Deutschland — deine Anfragen verlassen dabei nicht unsere + Infrastruktur.

-
+

+ Als Ausweichlösung bei Nichtverfügbarkeit des lokalen Modells wird + Claude Sonnet 4.6 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: + anthropic.com/privacy. +

+

+ KI-Empfehlungen sind Vorschläge und ersetzen keine tierärztliche Beratung. + Eine automatisierte Entscheidungsfindung mit rechtlicher Wirkung (Art. 22 DSGVO) + findet nicht statt. +

`)} - ${umamiSection} + ${sec('Push-Benachrichtigungen', ` +

+ Wenn du Push-Benachrichtigungen aktivierst, wird ein Abonnement-Token an den + Push-Dienst deines Browsers übermittelt: bei Android/Chrome an + Firebase Cloud Messaging (Google LLC, USA), bei iOS/Safari an + Apple Push Notification Service (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. +

`)} -
-

Deine Rechte (DSGVO)

-

+ ${sec('Kalender-Abo (Webcal)', ` +

+ 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. +

`)} + + ${sec('Einladungslinks (Referral)', ` +

+ 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. +

`)} + + ${sec('Nutzungsanalyse (Umami)', ` +

+ 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). +

`)} + + ${sec('Deine Rechte (DSGVO)', ` +

Du hast das Recht auf Auskunft (Art. 15), Berichtigung (Art. 16), Löschung (Art. 17), Einschränkung der Verarbeitung - (Art. 18) sowie Datenportabilität (Art. 20). Zur Ausübung deiner Rechte - wende dich per E-Mail an - mail@motocamp.de. - Du hast außerdem das Recht, bei der zuständigen Aufsichtsbehörde Beschwerde einzulegen. -

-
+ (Art. 18) sowie Datenportabilität (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 + mail@motocamp.de.

+ Du hast außerdem das Recht, bei der zuständigen Datenschutz-Aufsichtsbehörde + Beschwerde einzulegen:
+ Bayerisches Landesamt für Datenschutzaufsicht (BayLDA)
+ Promenade 27, 91522 Ansbach
+ www.lda.bayern.de +

`)} -
-

Speicherdauer

-

+ ${sec('Speicherdauer', ` +

Deine Daten werden gelöscht, sobald du deinen Account löschst. Server-Logs - werden nach 30 Tagen automatisch gelöscht. -

-
+ 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. +

`)}

Stand: April 2026 @@ -105,7 +169,6 @@ window.Page_datenschutz = (() => {

`; - } function refresh() {} diff --git a/backend/static/js/pages/impressum.js b/backend/static/js/pages/impressum.js index 32c9fbc..ac8b3bf 100644 --- a/backend/static/js/pages/impressum.js +++ b/backend/static/js/pages/impressum.js @@ -13,7 +13,7 @@ window.Page_impressum = (() => {

Angaben gemäß § 5 TMG

+ color:var(--c-text);margin:0 0 var(--space-2)">Angaben gemäß § 5 DDG

René Degelmann
Ringstr. 26
@@ -26,7 +26,9 @@ window.Page_impressum = (() => { color:var(--c-text);margin:0 0 var(--space-2)">Kontakt

E-Mail: mail@motocamp.de + style="color:var(--c-primary)">mail@motocamp.de
+ Kontaktformular: Nachricht senden

@@ -40,13 +42,25 @@ window.Page_impressum = (() => {

+
+

Streitschlichtung

+

+ Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit: + https://ec.europa.eu/consumers/odr.
+ Wir sind nicht bereit und nicht verpflichtet, an einem Streitbeilegungsverfahren vor einer + Verbraucherschlichtungsstelle teilzunehmen (§ 36 VSBG). +

+
+

Haftungshinweis

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.

diff --git a/backend/static/sw.js b/backend/static/sw.js index 27b24eb..441db9d 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -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