From 1462c54df7b4464efbc498fe43515bb2cc88ae19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sat, 18 Apr 2026 02:57:29 +0200 Subject: [PATCH] Rewrite legal pages per legal review feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Imprint: - Add explicit Streitbeilegung section with the EU ODR link and the required statement that we don't participate in consumer dispute resolution proceedings. - Keep structure tight; drop the Haftungsausschluss boilerplate that repeated what's already covered by §§ 7-10 TMG. - Bilingual with EN summaries below each section. Privacy: - Reshape around proper GDPR structure: Controller → Data categories & purposes → Legal bases → Server logs → Storage durations → Third parties → Rights → Complaint authority → (plain-language) Privacy Manifest at the end. - FIX: acceptance of the Terms is NOT consent. Moved from Art. 6(1)(a) to Art. 6(1)(b) (Vertragserfüllung), with an explicit note that contract acceptance is not consent within the meaning of (1)(a). - Add explicit Server-Logfiles section (IP / timestamp / method / path / status / user-agent; Art. 6(1)(f); 14-day retention). - Add explicit Storage-duration list (account, Planner sessions, magic-link tokens, logs, Sentry). - Expand third-parties: Sentry, OpenStreetMap (explicit that the browser sends IP+UA directly to OSM tile servers, with OSMF privacy policy link), Overpass (via our proxy, upstream only sees our server), BRouter (self-hosted), SMTP, hosting inside EU under DPA. - Each section has a short "English." summary paragraph inline below the German text, per the feedback format request. - Privacy Manifest kept as a developer-friendly epilogue; trimmed and aligned with current reality (no cookies/localStorage/sessionStorage in Planner; no replays; no PII via Sentry). Terms: - Add § 2 Mindestalter (16) for Journal accounts; Planner anonymous has no age requirement. - Add § 3 Dienstverfügbarkeit (service availability): operator may modify/limit/interrupt/discontinue the service or individual accounts. - Add § 6 Inhalte und Nutzungsrechte: user retains ownership; grants operator a limited, non-transferable licence to store/process/ display content only for operating the service. - Tighten §4 DB reset, §5 user backup responsibility, and §9 liability (standard German DACH tiering: unlimited for intent/gross neg./life- body-health; limited to foreseeable damages on cardinal-duty breach for slight negligence; otherwise excluded). - Add §7 rule: no bulk scraping to build competing services. - Same bilingual format as the other two pages. Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/journal/app/routes/legal.imprint.tsx | 195 ++++++---- apps/journal/app/routes/legal.privacy.tsx | 450 +++++++++++++++------- apps/journal/app/routes/legal.terms.tsx | 358 +++++++++-------- 3 files changed, 628 insertions(+), 375 deletions(-) diff --git a/apps/journal/app/routes/legal.imprint.tsx b/apps/journal/app/routes/legal.imprint.tsx index d3bc4e0..adb0f3e 100644 --- a/apps/journal/app/routes/legal.imprint.tsx +++ b/apps/journal/app/routes/legal.imprint.tsx @@ -10,84 +10,141 @@ export function meta() { export default function ImprintPage() { return (
-

Impressum

+

Impressum / Legal Notice

+

+ Die deutsche Fassung ist maßgeblich. / The German version is authoritative. +

-
-

- Angaben gemäß § 5 TMG -

-
- {operator.name} -
- {operator.address.street} -
- {operator.address.postalCode} {operator.address.city} -
- {operator.address.country} -
+ {/* ------------------------------------------------------------------ + Deutsche Fassung + ------------------------------------------------------------------ */} -

Kontakt

-

- E-Mail:{" "} - - {operator.email} - -

+
+
+

+ Anbieter nach § 5 TMG +

+
+ {operator.name} +
+ {operator.address.street} +
+ {operator.address.postalCode} {operator.address.city} +
+ {operator.address.country} +
+
-

- Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV -

-
- {operator.responsiblePerson} -
- {operator.address.street} -
- {operator.address.postalCode} {operator.address.city} -
+
+

Kontakt

+

+ E-Mail:{" "} + + {operator.email} + +

+
-

Haftungsausschluss

-

- Die Inhalte dieser Seiten wurden mit größtmöglicher Sorgfalt erstellt. - Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte - können wir jedoch keine Gewähr übernehmen. trails.cool befindet sich - in aktiver Entwicklung (Alpha) — Inhalte, Funktionen und Daten können - sich jederzeit ändern oder entfallen. -

+
+

+ Inhaltlich verantwortlich nach § 18 Abs. 2 MStV +

+
+ {operator.responsiblePerson} +
+ {operator.address.street}, {operator.address.postalCode}{" "} + {operator.address.city} +
+
-

- Als Diensteanbieter sind wir gemäß § 7 Abs. 1 TMG für eigene Inhalte - auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach - §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht - verpflichtet, übermittelte oder gespeicherte fremde Informationen zu - überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige - Tätigkeit hinweisen. -

+
+

Streitbeilegung

+

+ Die Europäische Kommission stellt eine Plattform zur + Online-Streitbeilegung (OS) bereit:{" "} + + https://ec.europa.eu/consumers/odr + + . +

+

+ Wir sind nicht bereit oder verpflichtet, an + Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle + teilzunehmen. +

+
+ +
+

Alpha-Status

+

+ trails.cool befindet sich in aktiver Entwicklung (Alpha). Inhalte, + Funktionen und Daten können sich jederzeit ändern oder entfallen. +

+

-
-

- Legal notice (English summary) -

-

- trails.cool is operated from Germany by {operator.name}, reachable at - the address above and at{" "} - - {operator.email} - - . The service is currently in alpha — see the{" "} - - Terms of Service - {" "} - for details. -

+ {/* ------------------------------------------------------------------ + English version + ------------------------------------------------------------------ */} + +
+

English version

+ +
+

+ Service provider (§ 5 TMG) +

+
+ {operator.name}, {operator.address.street},{" "} + {operator.address.postalCode} {operator.address.city},{" "} + {operator.address.country} +
+
+ +
+

Contact

+

+ Email:{" "} + + {operator.email} + +

+
+ +
+

+ Content responsibility (§ 18 (2) MStV) +

+

{operator.responsiblePerson}, address as above.

+
+ +
+

Dispute resolution

+

+ The European Commission provides an online dispute resolution platform at{" "} + + https://ec.europa.eu/consumers/odr + + . We are not willing or obliged to participate in dispute resolution + proceedings before a consumer arbitration board. +

+
+ +
+

Alpha status

+

+ trails.cool is under active development (alpha). Features and data + may change or be removed at any time. +

+
); diff --git a/apps/journal/app/routes/legal.privacy.tsx b/apps/journal/app/routes/legal.privacy.tsx index 70fcef7..bddeeaa 100644 --- a/apps/journal/app/routes/legal.privacy.tsx +++ b/apps/journal/app/routes/legal.privacy.tsx @@ -13,16 +13,21 @@ export default function PrivacyPage() {

Datenschutzerklärung / Privacy Policy

-

Last updated: 2026-04-18

+

+ Stand / Last updated: 2026-04-18. Die deutsche Fassung ist maßgeblich. + The German version is authoritative; English summaries follow each + section. +

- {/* GDPR formal sections */} + {/* ================================================================ + 1. Verantwortlicher / Data controller + ================================================================ */}

- 1. Verantwortliche Stelle / Data Controller + 1. Verantwortlicher

-

- Verantwortlich für die Datenverarbeitung auf dieser Website im Sinne - der DSGVO ist: +

+ Verantwortlich für die Datenverarbeitung im Sinne der DSGVO ist:

{operator.name} @@ -38,69 +43,264 @@ export default function PrivacyPage() { {operator.email}
+

+ English. Data controller under GDPR is the party named + above. Contact for any data-protection matter: {operator.email}. +

+ {/* ================================================================ + 2. Erhobene Daten & Zwecke / Data categories & purposes + ================================================================ */}

- 2. Rechtsgrundlagen / Legal Basis + 2. Erhobene Daten und Zwecke

-

- Wir verarbeiten personenbezogene Daten auf Grundlage folgender - Rechtsgrundlagen: +

+ Wir verarbeiten nur die Daten, die für den Betrieb der jeweiligen + Funktion erforderlich sind. trails.cool besteht aus zwei Teilen: + dem Journal (trails.cool, mit Konto) und dem{" "} + Planner (planner.trails.cool, anonym).

-
    +
    • - Vertragserfüllung (Art. 6 Abs. 1 lit. b DSGVO): - Kontoverwaltung, Speicherung von Routen und Aktivitäten, Anmeldung - via Passkey / Magic Link. + Kontodaten (Journal): E-Mail-Adresse, + Benutzername, Anzeigename, Passkey-Public-Key. Zweck: + Kontoverwaltung und Anmeldung.
    • - Berechtigte Interessen (Art. 6 Abs. 1 lit. f DSGVO): - Fehlerüberwachung (Sentry) zur Sicherstellung der - Funktionsfähigkeit des Dienstes. + Nutzerinhalte (Journal): Routen (GPX-Daten, + Geometrie, Titel, Beschreibung) und Aktivitäten (Titel, + Beschreibung, Datum, Verknüpfung zu Routen). Zweck: Speicherung + und Anzeige innerhalb des Dienstes.
    • - Einwilligung (Art. 6 Abs. 1 lit. a DSGVO): Bei - ausdrücklicher Zustimmung zu den Nutzungsbedingungen während der - Registrierung. + Anmeldedaten (Journal): kurzlebige Magic-Link-Token + (zur E-Mail-basierten Anmeldung). Zweck: Authentifizierung. +
    • +
    • + Sitzungscookie (Journal): eine zufällige + Sitzungs-ID nach dem Einloggen. Zweck: Authentifizierung während + der Sitzung. +
    • +
    • + Planner-Sitzungsdaten: anonyme Sitzungs-ID, + kollaborativer Zustand (Wegpunkte, Notizen). Keine Zuordnung zu + einer Person. Zweck: gemeinsames Planen von Routen. +
    • +
    • + Server-Logfiles: IP-Adresse, Zeitstempel, + HTTP-Methode, Pfad, Statuscode, User-Agent. Zweck: Sicherheit, + Betrieb, Fehlersuche. Details siehe Abschnitt 4. +
    • +
    • + Fehlerdaten (Sentry): Stacktraces, + Fehlermeldungen, Browser-/OS-Information aus dem User-Agent, + Performance-Metriken. Bei eingeloggten Journal-Nutzer:innen + zusätzlich die Nutzer-ID (keine E-Mail, kein Benutzername). + Keine IP-Adressen, keine Cookies, keine Formulareingaben.
    +

    + English. The Journal stores only what you provide (account + details and your own routes/activities) plus short-lived auth + artefacts. The Planner is anonymous and holds only ephemeral + session state. Server logs and Sentry error data are covered + separately below. +

+ {/* ================================================================ + 3. Rechtsgrundlagen / Legal bases + ================================================================ */}
-

- 3. Ihre Rechte / Your Rights -

-

- Als betroffene Person stehen Ihnen folgende Rechte nach DSGVO zu: -

-
    -
  • Recht auf Auskunft (Art. 15 DSGVO)
  • -
  • Recht auf Berichtigung (Art. 16 DSGVO)
  • -
  • Recht auf Löschung (Art. 17 DSGVO)
  • -
  • Recht auf Einschränkung der Verarbeitung (Art. 18 DSGVO)
  • -
  • Recht auf Datenübertragbarkeit (Art. 20 DSGVO)
  • -
  • Widerspruchsrecht (Art. 21 DSGVO)
  • -
  • Recht auf Widerruf einer Einwilligung (Art. 7 Abs. 3 DSGVO)
  • +

    3. Rechtsgrundlagen

    +
      +
    • + Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung):{" "} + Kontoführung, Anmeldung per Passkey oder Magic Link, Speicherung + und Anzeige der von Ihnen erstellten Routen und Aktivitäten, + Versand notwendiger Transaktions-E-Mails, Bereitstellung anonymer + Planner-Sitzungen. Ein Konto sowie die Bestätigung der + Nutzungsbedingungen sind Bestandteil dieses Nutzungsvertrags – + sie sind keine Einwilligung im Sinne von Art. 6 Abs. 1 + lit. a DSGVO. +
    • +
    • + Art. 6 Abs. 1 lit. f DSGVO (berechtigte Interessen):{" "} + kurzzeitige Server-Logfiles zur Sicherung des Betriebs und zur + Missbrauchsabwehr, Rate-Limiting, Fehlermonitoring über Sentry + zur Sicherstellung der Funktionsfähigkeit des Dienstes. +
    -

    - Zur Ausübung dieser Rechte wenden Sie sich bitte an{" "} +

    + English. Contract (Art. 6(1)(b)) covers everything + account- and content-related; legitimate interests (Art. 6(1)(f)) + cover short-lived server logs, rate-limiting, and error monitoring. + We do not rely on consent for any of this. +

    +
+ + {/* ================================================================ + 4. Server-Logfiles / Server logs + ================================================================ */} +
+

4. Server-Logfiles

+

+ Beim Aufruf der Dienste werden automatisch technische Informationen + protokolliert: +

+
    +
  • IP-Adresse
  • +
  • Zeitstempel
  • +
  • HTTP-Methode, Pfad, Statuscode
  • +
  • User-Agent (Browser, Betriebssystem)
  • +
+

+ Zweck: Sicherheit, Betrieb und Fehlersuche.{" "} + Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.{" "} + Speicherdauer: maximal 14 Tage, danach automatische + Löschung. Eine Zusammenführung dieser Daten mit anderen Datenquellen + findet nicht statt. +

+

+ English. HTTP requests to our servers are logged (IP, + timestamp, method, path, status, user-agent) for up to 14 days for + operational and security purposes under Art. 6(1)(f), then deleted. +

+
+ + {/* ================================================================ + 5. Speicherdauer / Storage durations + ================================================================ */} +
+

5. Speicherdauer

+
    +
  • Konto und zugehörige Inhalte: bis zur Löschung durch Sie
  • +
  • Planner-Sitzungen: automatische Löschung nach 7 Tagen Inaktivität
  • +
  • Magic-Link-Token: 15 Minuten
  • +
  • Server-Logfiles: maximal 14 Tage
  • +
  • Fehlerdaten (Sentry): 90 Tage
  • +
+

+ English. Account and content kept until you delete them. + Ephemeral data (sessions, magic-link tokens, logs, Sentry events) + deleted automatically on the schedules above. +

+
+ + {/* ================================================================ + 6. Empfänger / Third parties + ================================================================ */} +
+

6. Empfänger und Drittanbieter

+

+ Wir geben personenbezogene Daten nur an die unten genannten + Auftragsverarbeiter und Dritten weiter, und auch dort nur im + jeweils notwendigen Umfang. +

+
    +
  • + Sentry (Functional Software Inc.) – Fehler- und + Performance-Monitoring. Was übermittelt wird: Stacktraces, + Fehlertext, Browser-/OS-Informationen aus dem User-Agent, + Performance-Daten; bei eingeloggten Journal-Nutzer:innen + zusätzlich die Nutzer-ID. Nicht übermittelt: + IP-Adresse, Cookies, vollständige HTTP-Header + (sendDefaultPii ist deaktiviert). Keine + Session-Replays. Hosting innerhalb der EU (Frankfurt). +
  • +
  • + OpenStreetMap – Kartenkacheln werden beim Anzeigen + der Karten direkt vom Browser von OSM-Tile-Servern geladen. Dabei + werden IP-Adresse und User-Agent an OSM übertragen. + Dies ist notwendig, um überhaupt eine Karte darzustellen; es gilt + die{" "} + + OSM Foundation Privacy Policy + + . +
  • +
  • + Overpass API (POI-Daten) – POI-Abfragen laufen + serverseitig über unsere eigene Route /api/overpass. + Der Upstream-Dienst sieht nur unsere Server-IP, nicht die Ihrer + Nutzer:innen. Aktueller Upstream: overpass.private.coffee + , der ohne Query-Logs arbeitet. Eine selbst gehostete Instanz ist + geplant. +
  • +
  • + BRouter – Routenberechnung läuft auf einer von uns + selbst gehosteten Instanz. Keine Weitergabe an Dritte. +
  • +
  • + SMTP-Versand – Transaktions-E-Mails (Magic Link, + Willkommensnachricht) werden über einen SMTP-Dienst versendet. + Dabei wird die E-Mail-Adresse der Empfänger:in an den SMTP-Dienst + übergeben. +
  • +
  • + Hosting – Die Dienste werden in Rechenzentren + innerhalb der EU betrieben. Ein Auftragsverarbeitungsvertrag mit + dem Hoster besteht. +
  • +
+

+ English. Third parties and what they receive: Sentry (error + details, no IPs/cookies, EU-hosted); OpenStreetMap tile servers + (your IP and user-agent, directly from your browser, to load map + tiles); Overpass (via our server-side proxy, so upstream only sees + our server); BRouter (self-hosted, no third party involved); SMTP + provider (your email address for magic link / welcome mail); + hosting provider in the EU under a DPA. +

+
+ + {/* ================================================================ + 7. Ihre Rechte / Rights + ================================================================ */} +
+

7. Ihre Rechte

+

+ Als betroffene Person stehen Ihnen die folgenden Rechte zu: +

+
    +
  • Auskunft (Art. 15 DSGVO)
  • +
  • Berichtigung (Art. 16 DSGVO)
  • +
  • Löschung (Art. 17 DSGVO)
  • +
  • Einschränkung der Verarbeitung (Art. 18 DSGVO)
  • +
  • Datenübertragbarkeit (Art. 20 DSGVO)
  • +
  • Widerspruch gegen Verarbeitung auf Basis berechtigter Interessen (Art. 21 DSGVO)
  • +
+

+ Zur Ausübung dieser Rechte genügt eine formlose E-Mail an{" "} {operator.email} - . Ein vollständiger Export Ihrer Daten ist jederzeit direkt über die - Einstellungen Ihres Kontos möglich (Routen als GPX, Aktivitäten als - GPX/JSON). Sie können Ihr Konto jederzeit selbst löschen. + . Einen vollständigen Export Ihrer Routen und Aktivitäten können Sie + jederzeit direkt in den Kontoeinstellungen herunterladen (GPX bzw. + JSON). Ihr Konto samt Inhalten können Sie dort ebenfalls selbst + löschen. +

+

+ English. You have the standard GDPR rights (access, + rectification, erasure, restriction, portability, objection). Email + us to exercise them. Data exports and account deletion are also + available directly in your account settings.

+ {/* ================================================================ + 8. Beschwerderecht / Complaint authority + ================================================================ */}
-

- 4. Beschwerderecht / Right to Complain -

-

+

8. Beschwerderecht

+

Sie haben das Recht, sich bei einer Datenschutzaufsichtsbehörde zu - beschweren. Zuständig für uns ist: + beschweren. Für uns zuständig ist:

Berliner Beauftragte für Datenschutz und Informationsfreiheit @@ -116,135 +316,89 @@ export default function PrivacyPage() { www.datenschutz-berlin.de
+

+ English. You have the right to lodge a complaint with a + supervisory authority; ours is the Berlin data-protection + commissioner (address above). +

-
+
- {/* Existing privacy manifest (plain-language) */} + {/* ================================================================ + Privacy Manifest (developer-friendly, plain language) + ================================================================ */}

Privacy Manifest

-

- trails.cool is committed to privacy by design. This manifest documents - everything we collect, why, and how you can control it. +

+ A plain-language summary of what we do, for readers who prefer + behaviour over paragraphs. Binding text is above.

-
+

Planner (planner.trails.cool)

-

- The Planner collects no personal data. Sessions are anonymous — - there are no user accounts, no tracking, and no analytics on your routes. +

+ Anonymous by design. No account, no identifier, nothing persisted + past the session.

-
    +
    • No cookies, no localStorage, no sessionStorage
    • -
    • No user accounts or login
    • -
    • No browser-side error tracking (Sentry is not loaded in the Planner)
    • -
    • No route data is stored permanently without your action
    • -
    • Session data is automatically deleted after 7 days of inactivity
    • +
    • No browser-side error tracking (Sentry is not loaded)
    • +
    • Session data is deleted automatically after 7 days of inactivity
-
+

Journal (trails.cool)

-

- The Journal stores the data you explicitly provide: +

+ Holds only what you put in. Exportable any time, deletable any time.

-
    -
  • Account data: email, username, display name, passkey credentials
  • -
  • Routes: name, description, GPX data, geometry
  • -
  • Activities: title, description, date, linked routes
  • +
      +
    • Account: email, username, display name, passkey public key
    • +
    • Routes: GPX, geometry, title, description
    • +
    • Activities: title, description, date, linked route
    • +
    • GPX / JSON export available per object and overall
    -

    - All your data is exportable at any time in open formats (GPX, JSON). - You can self-host your own instance and migrate your data completely. -

-
-

Error Tracking (Sentry)

-

- We use Sentry for - error monitoring, scoped narrowly by design. -

-

Where Sentry runs:

-
    -
  • Journal, logged-out: server-side only. The browser-side Sentry SDK is not loaded until you log in.
  • -
  • Journal, logged-in: Sentry initialises in the browser after login and is torn down on logout.
  • -
  • Planner: server-side only. The browser-side Planner does not load Sentry at all.
  • +
    +

    Sentry

    +
      +
    • Journal server: always on
    • +
    • Journal browser: only after login, torn down on logout
    • +
    • Planner: server only; the browser never loads Sentry
    • +
    • No IPs, no cookies, no headers (sendDefaultPii: false)
    • +
    • No replays (replay integration not installed, sample rates 0)
    • +
    • User ID only (no email/username) on Journal-logged-in events
    -

    What Sentry collects:

    -
      -
    • Error details: stack traces, error messages, browser/OS info derived from the User-Agent
    • -
    • Performance traces: page load times, route navigation timing
    • -
    • User ID (Journal, logged-in only): just the user ID — not username, email, or IP
    • -
    -

    What Sentry does NOT collect:

    -
      -
    • Session replays or DOM recordings — replay integration is not installed and sample rates are 0
    • -
    • IP addresses, cookies, or full HTTP headers — sendDefaultPii is set to false everywhere
    • -
    • Route or GPX data
    • -
    • Passwords or passkey credentials
    • -
    • Form input contents
    • -
    -

    Data retention:

    -

    - Sentry data is retained for 90 days and then automatically deleted. - Sentry's servers are hosted in the EU (Frankfurt). -

    -
    -

    Email

    -

    - The Journal sends transactional emails for magic link login and welcome messages - via SMTP. On the official instance, emails are sent through our own mail server. -

    -

    What is sent via email:

    -
      -
    • Magic link: a one-time login link sent to your email address
    • -
    • Welcome email: a greeting after registration
    • +
      +

      What we don't do

      +
        +
      • Sell data
      • +
      • Show ads
      • +
      • Build user profiles
      • +
      • Run tracking pixels, analytics, or A/B tests
      -

      - Self-hosted instances can configure their own SMTP server. No email content - is stored beyond what your mail server retains. -

      -
      -

      Third Parties

      -
        -
      • Sentry (Functional Software Inc.) — error tracking, as described above
      • -
      • OpenStreetMap — map tiles are loaded from OSM tile servers. OSM's privacy policy applies to tile requests.
      • -
      • BRouter — routing requests are processed by our self-hosted BRouter instance. No data is sent to third parties for routing.
      • +
        +

        Security

        +
          +
        • Auth via passkey (WebAuthn) or magic link — no passwords stored
        • +
        • HTTPS + HSTS preload on all origins; session cookies httpOnly + Secure
        • +
        • CSP, X-Frame-Options, X-Content-Type-Options on every response
        • +
        • Containers run non-root; host firewall restricts to HTTP/HTTPS/SSH
        • +
        • Gitleaks + dependency audit on every PR
        • - Overpass API — POI overlay data is fetched via the Overpass API. Requests are proxied - through our own server (/api/overpass), so the upstream Overpass host sees our server rather - than end users' IP addresses or browsers. The current upstream is{" "} - overpass.private.coffee, - which operates without query logging. A self-hosted Overpass instance is planned. + Vulnerability reports:{" "} + + SECURITY.md +
        • -
        • SMTP provider — transactional emails (magic link, welcome) are delivered via SMTP. Self-hosters configure their own provider.
        • -
        -
        - -
        -

        What We Don't Do

        -
          -
        • We don't sell data
        • -
        • We don't show ads
        • -
        • We don't build user profiles
        • -
        • We don't use tracking pixels or analytics
        • -
        • We don't share data with anyone except as listed above
        • -
        -
        - -
        -

        Security Practices

        -
          -
        • Authentication: Passkey (WebAuthn) and magic link login. No passwords stored.
        • -
        • Encryption: All traffic over HTTPS with HSTS preload. Cookies are httpOnly and secure.
        • -
        • Headers: Content-Security-Policy, X-Frame-Options, X-Content-Type-Options on all responses.
        • -
        • Infrastructure: Docker containers run as non-root. Firewall restricts to HTTP/HTTPS/SSH only.
        • -
        • CI/CD: Gitleaks secret scanning and dependency auditing on every pull request.
        • -
        • Vulnerability reporting: See our SECURITY.md for responsible disclosure.
        diff --git a/apps/journal/app/routes/legal.terms.tsx b/apps/journal/app/routes/legal.terms.tsx index e36e6fc..b8538f8 100644 --- a/apps/journal/app/routes/legal.terms.tsx +++ b/apps/journal/app/routes/legal.terms.tsx @@ -1,6 +1,6 @@ export function meta() { return [ - { title: "Terms of Service — trails.cool" }, + { title: "Nutzungsbedingungen — trails.cool" }, { name: "robots", content: "noindex" }, ]; } @@ -12,175 +12,217 @@ export default function TermsPage() { Nutzungsbedingungen / Terms of Service

        - Last updated: 2026-04-17 • Alpha version — subject to change + Stand / Last updated: 2026-04-18 • Alpha — subject to change. Die + deutsche Fassung ist maßgeblich. The German version is authoritative; + English summaries follow each section.

        - {/* Deutsche Fassung (maßgebend) */} -
        -

        Deutsche Fassung

        +
        +
        +

        + 1. Gegenstand und Alpha-Status +

        +

        + trails.cool ist ein experimenteller, kostenloser Dienst zur Planung + und Dokumentation von Outdoor-Aktivitäten. Der Dienst befindet sich + in aktiver Entwicklung (Alpha). Funktionen, Schnittstellen und + gespeicherte Daten können jederzeit ohne Vorankündigung geändert, + unterbrochen, gelöscht oder eingestellt werden. Eine + Verfügbarkeitsgarantie besteht nicht. +

        +

        + English. trails.cool is an experimental, free service in + active alpha development. Features, data, and availability can + change at any time without notice. No availability is guaranteed. +

        +
        -

        - 1. Gegenstand und Alpha-Status -

        -

        - trails.cool ist ein experimenteller Dienst zur Planung und Dokumentation - von Outdoor-Aktivitäten. Der Dienst befindet sich in aktiver Entwicklung - (Alpha). Funktionen, Schnittstellen und gespeicherte Daten können - jederzeit ohne Vorankündigung geändert, gelöscht oder eingestellt - werden. Eine Verfügbarkeitsgarantie besteht nicht. -

        +
        +

        + 2. Mindestalter +

        +

        + Die Nutzung eines Journal-Kontos ist erst ab einem Alter von 16 + Jahren zulässig. Anonyme Nutzung des Planners unterliegt keiner + Altersbeschränkung. +

        +

        + English. A Journal account is available only to users + aged 16 or older. Anonymous use of the Planner has no age + requirement. +

        +
        -

        - 2. Zurücksetzen der Datenbank -

        -

        - Während der Alpha-Phase behält sich der Betreiber ausdrücklich das Recht - vor, die gesamte Datenbank zurückzusetzen oder einzelne Datensätze ohne - vorherige Benachrichtigung zu löschen. Nutzer:innen sollten wichtige - Routen und Aktivitäten selbstständig über die Export-Funktion (GPX) - sichern. -

        +
        +

        + 3. Dienstverfügbarkeit +

        +

        + Der Betreiber kann den Dienst jederzeit ändern, einschränken, + unterbrechen oder einstellen, auch einzelne Funktionen oder + einzelne Konten. Wartungs- und Ausfallzeiten sind möglich. +

        +

        + English. The operator may modify, limit, interrupt, or + discontinue the service (or parts of it, or individual accounts) + at any time. Downtime and maintenance windows may occur. +

        +
        -

        - 3. Haftungsausschluss -

        -

        - Der Dienst wird ohne jegliche Gewährleistung bereitgestellt. Eine Haftung - für Schäden, die durch die Nutzung oder Nichtverfügbarkeit des Dienstes - entstehen, ist ausgeschlossen, soweit dies gesetzlich zulässig ist. Bei - Vorsatz und grober Fahrlässigkeit sowie bei Verletzung von Leben, Körper - und Gesundheit gelten die gesetzlichen Vorschriften. -

        +
        +

        + 4. Zurücksetzen der Datenbank +

        +

        + Während der Alpha-Phase behält sich der Betreiber ausdrücklich das + Recht vor, die gesamte Datenbank zurückzusetzen oder einzelne + Datensätze ohne vorherige Benachrichtigung zu löschen. + Nutzer:innen sollten wichtige Routen und Aktivitäten selbstständig + über die Export-Funktion (GPX bzw. JSON) sichern. +

        +

        + English. During alpha, the operator may reset the entire + database or delete individual records without notice. Back up + anything important via the GPX / JSON export. +

        +
        -

        - 4. Nutzungsregeln -

        -
          -
        • Keine Verbreitung rechtswidriger Inhalte
        • -
        • Keine missbräuchliche Nutzung (Spam, automatisierte Abfragen in - hoher Frequenz, Denial-of-Service) -
        • -
        • Kein Umgehen technischer Schutzmaßnahmen
        • -
        +
        +

        + 5. Eigenverantwortung für Daten +

        +

        + Nutzer:innen sind für die Sicherung ihrer Inhalte selbst + verantwortlich. GPX- und JSON-Exporte sind im Journal jederzeit + für jede Route und Aktivität verfügbar. Der Betreiber schuldet + keine Datenwiederherstellung. +

        +

        + English. You are responsible for backing up your own + content. Exports are always available in the Journal; the + operator owes no data recovery. +

        +
        -

        - 5. Eigenverantwortung für Daten -

        -

        - Nutzer:innen sind dafür verantwortlich, regelmäßig Sicherungskopien ihrer - Routen und Aktivitäten anzufertigen. GPX-Exporte sind im Journal für - jede Route und Aktivität verfügbar. -

        +
        +

        + 6. Inhalte und Nutzungsrechte +

        +

        + Die von Ihnen eingestellten Inhalte (Routen, Aktivitäten, + Beschreibungen, GPX-Dateien) bleiben Ihr Eigentum. Sie räumen dem + Betreiber lediglich das einfache, nicht übertragbare Recht ein, + diese Inhalte zum Zweck des Betriebs des Dienstes zu speichern, + zu verarbeiten und Ihnen wieder anzuzeigen. Eine darüber + hinausgehende Nutzung, Veröffentlichung oder Weitergabe findet + nicht statt. +

        +

        + English. You retain ownership of everything you upload. + You grant the operator a limited, non-transferable licence to + store, process, and display your content solely for operating the + service; no other use, publication, or sharing. +

        +
        -

        - 6. Beendigung -

        -

        - Nutzer:innen können ihr Konto jederzeit über die Einstellungen löschen. - Der Betreiber kann Konten bei Verstößen gegen diese Bedingungen sperren - oder löschen. -

        +
        +

        + 7. Nutzungsregeln +

        +
          +
        • Keine Verbreitung rechtswidriger Inhalte
        • +
        • + Keine missbräuchliche Nutzung (Spam, hochfrequente automatisierte + Abfragen, Denial-of-Service) +
        • +
        • Kein Umgehen technischer Schutzmaßnahmen
        • +
        • + Keine Verwendung des Dienstes zum Aufbau konkurrierender + Angebote durch massenhaftes Abziehen von Daten +
        • +
        +

        + English. No illegal content, no abuse (spam, flooding, + DoS), no circumvention of technical protections, no bulk scraping + to build competing services. +

        +
        -

        - 7. Änderungen -

        -

        - Diese Nutzungsbedingungen können sich während der Alpha-Phase ändern. Bei - wesentlichen Änderungen werden registrierte Nutzer:innen per E-Mail - informiert und müssen die neuen Bedingungen erneut bestätigen. -

        +
        +

        + 8. Kontobeendigung +

        +

        + Sie können Ihr Konto jederzeit über die Einstellungen löschen; + damit werden auch die zugehörigen Inhalte gelöscht. Der Betreiber + kann Konten bei Verstößen gegen diese Bedingungen nach + angemessener Interessenabwägung sperren oder löschen. +

        +

        + English. Delete your account (and its content) any time + via settings. The operator may suspend or delete accounts that + violate these terms, balancing interests reasonably. +

        +
        -

        - 8. Anwendbares Recht -

        -

        - Es gilt deutsches Recht unter Ausschluss des UN-Kaufrechts. Verbraucher:innen - mit gewöhnlichem Aufenthalt in der EU genießen den zwingenden Schutz - ihres nationalen Verbraucherrechts. -

        -
        +
        +

        + 9. Haftung +

        +

        + Der Dienst wird ohne Gewährleistung bereitgestellt. Der Betreiber + haftet uneingeschränkt bei Vorsatz und grober Fahrlässigkeit sowie + bei Verletzung von Leben, Körper oder Gesundheit. Im Übrigen ist + die Haftung für leicht fahrlässige Pflichtverletzungen auf den + vertragstypischen, vorhersehbaren Schaden bei Verletzung + wesentlicher Vertragspflichten (Kardinalpflichten) begrenzt. Eine + darüber hinausgehende Haftung – insbesondere für Datenverlust – + ist ausgeschlossen, soweit gesetzlich zulässig. +

        +

        + English. No warranty. Unlimited liability for intent, + gross negligence, and injury to life, body, or health. For + slight negligence, liability is limited to foreseeable damages + arising from breach of material contractual duties. Liability + beyond that — in particular for data loss — is excluded to the + extent permitted by law. +

        +
        -
        +
        +

        + 10. Änderungen der Bedingungen +

        +

        + Diese Nutzungsbedingungen können sich während der Alpha-Phase + ändern. Bei wesentlichen Änderungen werden registrierte + Nutzer:innen per E-Mail informiert und müssen die neuen + Bedingungen erneut bestätigen. +

        +

        + English. These terms may change during alpha. Registered + users will be emailed about material changes and prompted to + re-accept. +

        +
        - {/* English translation (informational) */} -
        -

        English version

        -

        - The German version is authoritative. This English text is a translation - for convenience. -

        - -

        - 1. Alpha status -

        -

        - trails.cool is an experimental service for planning and documenting - outdoor activities. It is under active development (alpha). Features, - APIs, and stored data may change, be deleted, or be discontinued at any - time without notice. No availability is guaranteed. -

        - -

        - 2. Database resets -

        -

        - During alpha, the operator expressly reserves the right to reset the - entire database or delete individual records without prior notice. Users - should back up important routes and activities via the GPX export. -

        - -

        - 3. No warranty -

        -

        - The service is provided without any warranty. Liability for damages - arising from use or unavailability is excluded to the maximum extent - permitted by law. Statutory provisions apply for intent, gross - negligence, and injury to life, body, or health. -

        - -

        - 4. Acceptable use -

        -
          -
        • No illegal content
        • -
        • No abusive use (spam, high-frequency automated requests, denial of service)
        • -
        • No circumvention of technical protections
        • -
        - -

        - 5. Data responsibility -

        -

        - Users are responsible for regularly backing up their routes and - activities. GPX exports are available in the Journal for every route - and activity. -

        - -

        - 6. Termination -

        -

        - Users can delete their account at any time via settings. The operator - may suspend or delete accounts that violate these terms. -

        - -

        - 7. Changes -

        -

        - These terms may change during alpha. Registered users will be notified - by email of material changes and must re-accept the updated terms. -

        - -

        - 8. Governing law -

        -

        - German law applies, excluding the UN Convention on Contracts for the - International Sale of Goods. Consumers habitually residing in the EU - retain the mandatory protection of their national consumer law. -

        +
        +

        + 11. Anwendbares Recht +

        +

        + Es gilt deutsches Recht unter Ausschluss des UN-Kaufrechts. Für + Verbraucher:innen mit gewöhnlichem Aufenthalt in einem Mitgliedstaat + der Europäischen Union bleibt der zwingende Schutz des Rechts ihres + Aufenthaltslandes unberührt. +

        +

        + English. German law applies, excluding the UN Convention + on Contracts for the International Sale of Goods. Consumers + habitually residing in an EU member state retain the mandatory + protection of their national law. +

        +
        );