Rewrite legal pages per legal review feedback
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) <noreply@anthropic.com>
This commit is contained in:
parent
559642ea30
commit
1462c54df7
3 changed files with 628 additions and 375 deletions
|
|
@ -10,84 +10,141 @@ export function meta() {
|
||||||
export default function ImprintPage() {
|
export default function ImprintPage() {
|
||||||
return (
|
return (
|
||||||
<div className="mx-auto max-w-2xl px-4 py-12">
|
<div className="mx-auto max-w-2xl px-4 py-12">
|
||||||
<h1 className="text-3xl font-bold text-gray-900">Impressum</h1>
|
<h1 className="text-3xl font-bold text-gray-900">Impressum / Legal Notice</h1>
|
||||||
|
<p className="mt-2 text-xs text-gray-500">
|
||||||
|
Die deutsche Fassung ist maßgeblich. / The German version is authoritative.
|
||||||
|
</p>
|
||||||
|
|
||||||
<section className="mt-8 space-y-4 text-gray-700">
|
{/* ------------------------------------------------------------------
|
||||||
<h2 className="text-lg font-semibold text-gray-900">
|
Deutsche Fassung
|
||||||
Angaben gemäß § 5 TMG
|
------------------------------------------------------------------ */}
|
||||||
</h2>
|
|
||||||
<address className="not-italic">
|
|
||||||
{operator.name}
|
|
||||||
<br />
|
|
||||||
{operator.address.street}
|
|
||||||
<br />
|
|
||||||
{operator.address.postalCode} {operator.address.city}
|
|
||||||
<br />
|
|
||||||
{operator.address.country}
|
|
||||||
</address>
|
|
||||||
|
|
||||||
<h2 className="text-lg font-semibold text-gray-900">Kontakt</h2>
|
<section className="mt-10 space-y-6 text-gray-700">
|
||||||
<p>
|
<div>
|
||||||
E-Mail:{" "}
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
<a
|
Anbieter nach § 5 TMG
|
||||||
className="text-blue-600 hover:underline"
|
</h2>
|
||||||
href={`mailto:${operator.email}`}
|
<address className="mt-2 not-italic">
|
||||||
>
|
{operator.name}
|
||||||
{operator.email}
|
<br />
|
||||||
</a>
|
{operator.address.street}
|
||||||
</p>
|
<br />
|
||||||
|
{operator.address.postalCode} {operator.address.city}
|
||||||
|
<br />
|
||||||
|
{operator.address.country}
|
||||||
|
</address>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h2 className="text-lg font-semibold text-gray-900">
|
<div>
|
||||||
Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV
|
<h2 className="text-lg font-semibold text-gray-900">Kontakt</h2>
|
||||||
</h2>
|
<p className="mt-2">
|
||||||
<address className="not-italic">
|
E-Mail:{" "}
|
||||||
{operator.responsiblePerson}
|
<a className="text-blue-600 hover:underline" href={`mailto:${operator.email}`}>
|
||||||
<br />
|
{operator.email}
|
||||||
{operator.address.street}
|
</a>
|
||||||
<br />
|
</p>
|
||||||
{operator.address.postalCode} {operator.address.city}
|
</div>
|
||||||
</address>
|
|
||||||
|
|
||||||
<h2 className="text-lg font-semibold text-gray-900">Haftungsausschluss</h2>
|
<div>
|
||||||
<p className="text-sm">
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
Die Inhalte dieser Seiten wurden mit größtmöglicher Sorgfalt erstellt.
|
Inhaltlich verantwortlich nach § 18 Abs. 2 MStV
|
||||||
Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte
|
</h2>
|
||||||
können wir jedoch keine Gewähr übernehmen. trails.cool befindet sich
|
<address className="mt-2 not-italic">
|
||||||
in aktiver Entwicklung (Alpha) — Inhalte, Funktionen und Daten können
|
{operator.responsiblePerson}
|
||||||
sich jederzeit ändern oder entfallen.
|
<br />
|
||||||
</p>
|
{operator.address.street}, {operator.address.postalCode}{" "}
|
||||||
|
{operator.address.city}
|
||||||
|
</address>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p className="text-sm">
|
<div>
|
||||||
Als Diensteanbieter sind wir gemäß § 7 Abs. 1 TMG für eigene Inhalte
|
<h2 className="text-lg font-semibold text-gray-900">Streitbeilegung</h2>
|
||||||
auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach
|
<p className="mt-2 text-sm">
|
||||||
§§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht
|
Die Europäische Kommission stellt eine Plattform zur
|
||||||
verpflichtet, übermittelte oder gespeicherte fremde Informationen zu
|
Online-Streitbeilegung (OS) bereit:{" "}
|
||||||
überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige
|
<a
|
||||||
Tätigkeit hinweisen.
|
className="text-blue-600 hover:underline"
|
||||||
</p>
|
href="https://ec.europa.eu/consumers/odr"
|
||||||
|
>
|
||||||
|
https://ec.europa.eu/consumers/odr
|
||||||
|
</a>
|
||||||
|
.
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 text-sm">
|
||||||
|
Wir sind nicht bereit oder verpflichtet, an
|
||||||
|
Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle
|
||||||
|
teilzunehmen.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h2 className="text-lg font-semibold text-gray-900">Alpha-Status</h2>
|
||||||
|
<p className="mt-2 text-sm">
|
||||||
|
trails.cool befindet sich in aktiver Entwicklung (Alpha). Inhalte,
|
||||||
|
Funktionen und Daten können sich jederzeit ändern oder entfallen.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<hr className="my-12 border-gray-200" />
|
<hr className="my-12 border-gray-200" />
|
||||||
|
|
||||||
<section className="space-y-4 text-gray-700">
|
{/* ------------------------------------------------------------------
|
||||||
<h2 className="text-lg font-semibold text-gray-900">
|
English version
|
||||||
Legal notice (English summary)
|
------------------------------------------------------------------ */}
|
||||||
</h2>
|
|
||||||
<p className="text-sm">
|
<section className="space-y-6 text-gray-700">
|
||||||
trails.cool is operated from Germany by {operator.name}, reachable at
|
<h2 className="text-xl font-semibold text-gray-900">English version</h2>
|
||||||
the address above and at{" "}
|
|
||||||
<a
|
<div>
|
||||||
className="text-blue-600 hover:underline"
|
<h3 className="text-base font-semibold text-gray-900">
|
||||||
href={`mailto:${operator.email}`}
|
Service provider (§ 5 TMG)
|
||||||
>
|
</h3>
|
||||||
{operator.email}
|
<address className="mt-2 not-italic text-sm">
|
||||||
</a>
|
{operator.name}, {operator.address.street},{" "}
|
||||||
. The service is currently in alpha — see the{" "}
|
{operator.address.postalCode} {operator.address.city},{" "}
|
||||||
<a className="text-blue-600 hover:underline" href="/legal/terms">
|
{operator.address.country}
|
||||||
Terms of Service
|
</address>
|
||||||
</a>{" "}
|
</div>
|
||||||
for details.
|
|
||||||
</p>
|
<div>
|
||||||
|
<h3 className="text-base font-semibold text-gray-900">Contact</h3>
|
||||||
|
<p className="mt-2 text-sm">
|
||||||
|
Email:{" "}
|
||||||
|
<a className="text-blue-600 hover:underline" href={`mailto:${operator.email}`}>
|
||||||
|
{operator.email}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 className="text-base font-semibold text-gray-900">
|
||||||
|
Content responsibility (§ 18 (2) MStV)
|
||||||
|
</h3>
|
||||||
|
<p className="mt-2 text-sm">{operator.responsiblePerson}, address as above.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 className="text-base font-semibold text-gray-900">Dispute resolution</h3>
|
||||||
|
<p className="mt-2 text-sm">
|
||||||
|
The European Commission provides an online dispute resolution platform at{" "}
|
||||||
|
<a
|
||||||
|
className="text-blue-600 hover:underline"
|
||||||
|
href="https://ec.europa.eu/consumers/odr"
|
||||||
|
>
|
||||||
|
https://ec.europa.eu/consumers/odr
|
||||||
|
</a>
|
||||||
|
. We are not willing or obliged to participate in dispute resolution
|
||||||
|
proceedings before a consumer arbitration board.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 className="text-base font-semibold text-gray-900">Alpha status</h3>
|
||||||
|
<p className="mt-2 text-sm">
|
||||||
|
trails.cool is under active development (alpha). Features and data
|
||||||
|
may change or be removed at any time.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -13,16 +13,21 @@ export default function PrivacyPage() {
|
||||||
<h1 className="text-3xl font-bold text-gray-900">
|
<h1 className="text-3xl font-bold text-gray-900">
|
||||||
Datenschutzerklärung / Privacy Policy
|
Datenschutzerklärung / Privacy Policy
|
||||||
</h1>
|
</h1>
|
||||||
<p className="mt-2 text-sm text-gray-500">Last updated: 2026-04-18</p>
|
<p className="mt-2 text-sm text-gray-500">
|
||||||
|
Stand / Last updated: 2026-04-18. Die deutsche Fassung ist maßgeblich.
|
||||||
|
The German version is authoritative; English summaries follow each
|
||||||
|
section.
|
||||||
|
</p>
|
||||||
|
|
||||||
{/* GDPR formal sections */}
|
{/* ================================================================
|
||||||
|
1. Verantwortlicher / Data controller
|
||||||
|
================================================================ */}
|
||||||
<section className="mt-10">
|
<section className="mt-10">
|
||||||
<h2 className="text-xl font-semibold text-gray-900">
|
<h2 className="text-xl font-semibold text-gray-900">
|
||||||
1. Verantwortliche Stelle / Data Controller
|
1. Verantwortlicher
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mt-2 text-gray-600">
|
<p className="mt-2 text-gray-700">
|
||||||
Verantwortlich für die Datenverarbeitung auf dieser Website im Sinne
|
Verantwortlich für die Datenverarbeitung im Sinne der DSGVO ist:
|
||||||
der DSGVO ist:
|
|
||||||
</p>
|
</p>
|
||||||
<address className="mt-2 not-italic text-gray-700">
|
<address className="mt-2 not-italic text-gray-700">
|
||||||
{operator.name}
|
{operator.name}
|
||||||
|
|
@ -38,69 +43,264 @@ export default function PrivacyPage() {
|
||||||
{operator.email}
|
{operator.email}
|
||||||
</a>
|
</a>
|
||||||
</address>
|
</address>
|
||||||
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
|
<em>English.</em> Data controller under GDPR is the party named
|
||||||
|
above. Contact for any data-protection matter: {operator.email}.
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
{/* ================================================================
|
||||||
|
2. Erhobene Daten & Zwecke / Data categories & purposes
|
||||||
|
================================================================ */}
|
||||||
<section className="mt-10">
|
<section className="mt-10">
|
||||||
<h2 className="text-xl font-semibold text-gray-900">
|
<h2 className="text-xl font-semibold text-gray-900">
|
||||||
2. Rechtsgrundlagen / Legal Basis
|
2. Erhobene Daten und Zwecke
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mt-2 text-gray-600">
|
<p className="mt-2 text-gray-700">
|
||||||
Wir verarbeiten personenbezogene Daten auf Grundlage folgender
|
Wir verarbeiten nur die Daten, die für den Betrieb der jeweiligen
|
||||||
Rechtsgrundlagen:
|
Funktion erforderlich sind. trails.cool besteht aus zwei Teilen:
|
||||||
|
dem <strong>Journal</strong> (trails.cool, mit Konto) und dem{" "}
|
||||||
|
<strong>Planner</strong> (planner.trails.cool, anonym).
|
||||||
</p>
|
</p>
|
||||||
<ul className="mt-3 list-disc pl-6 text-gray-600 space-y-1">
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-2">
|
||||||
<li>
|
<li>
|
||||||
<strong>Vertragserfüllung (Art. 6 Abs. 1 lit. b DSGVO)</strong>:
|
<strong>Kontodaten (Journal):</strong> E-Mail-Adresse,
|
||||||
Kontoverwaltung, Speicherung von Routen und Aktivitäten, Anmeldung
|
Benutzername, Anzeigename, Passkey-Public-Key. Zweck:
|
||||||
via Passkey / Magic Link.
|
Kontoverwaltung und Anmeldung.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<strong>Berechtigte Interessen (Art. 6 Abs. 1 lit. f DSGVO)</strong>:
|
<strong>Nutzerinhalte (Journal):</strong> Routen (GPX-Daten,
|
||||||
Fehlerüberwachung (Sentry) zur Sicherstellung der
|
Geometrie, Titel, Beschreibung) und Aktivitäten (Titel,
|
||||||
Funktionsfähigkeit des Dienstes.
|
Beschreibung, Datum, Verknüpfung zu Routen). Zweck: Speicherung
|
||||||
|
und Anzeige innerhalb des Dienstes.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<strong>Einwilligung (Art. 6 Abs. 1 lit. a DSGVO)</strong>: Bei
|
<strong>Anmeldedaten (Journal):</strong> kurzlebige Magic-Link-Token
|
||||||
ausdrücklicher Zustimmung zu den Nutzungsbedingungen während der
|
(zur E-Mail-basierten Anmeldung). Zweck: Authentifizierung.
|
||||||
Registrierung.
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Sitzungscookie (Journal):</strong> eine zufällige
|
||||||
|
Sitzungs-ID nach dem Einloggen. Zweck: Authentifizierung während
|
||||||
|
der Sitzung.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Planner-Sitzungsdaten:</strong> anonyme Sitzungs-ID,
|
||||||
|
kollaborativer Zustand (Wegpunkte, Notizen). Keine Zuordnung zu
|
||||||
|
einer Person. Zweck: gemeinsames Planen von Routen.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Server-Logfiles:</strong> IP-Adresse, Zeitstempel,
|
||||||
|
HTTP-Methode, Pfad, Statuscode, User-Agent. Zweck: Sicherheit,
|
||||||
|
Betrieb, Fehlersuche. Details siehe Abschnitt 4.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Fehlerdaten (Sentry):</strong> 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.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
{/* ================================================================
|
||||||
|
3. Rechtsgrundlagen / Legal bases
|
||||||
|
================================================================ */}
|
||||||
<section className="mt-10">
|
<section className="mt-10">
|
||||||
<h2 className="text-xl font-semibold text-gray-900">
|
<h2 className="text-xl font-semibold text-gray-900">3. Rechtsgrundlagen</h2>
|
||||||
3. Ihre Rechte / Your Rights
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-2">
|
||||||
</h2>
|
<li>
|
||||||
<p className="mt-2 text-gray-600">
|
<strong>Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung):</strong>{" "}
|
||||||
Als betroffene Person stehen Ihnen folgende Rechte nach DSGVO zu:
|
Kontoführung, Anmeldung per Passkey oder Magic Link, Speicherung
|
||||||
</p>
|
und Anzeige der von Ihnen erstellten Routen und Aktivitäten,
|
||||||
<ul className="mt-3 list-disc pl-6 text-gray-600 space-y-1">
|
Versand notwendiger Transaktions-E-Mails, Bereitstellung anonymer
|
||||||
<li>Recht auf Auskunft (Art. 15 DSGVO)</li>
|
Planner-Sitzungen. Ein Konto sowie die Bestätigung der
|
||||||
<li>Recht auf Berichtigung (Art. 16 DSGVO)</li>
|
Nutzungsbedingungen sind Bestandteil dieses Nutzungsvertrags –
|
||||||
<li>Recht auf Löschung (Art. 17 DSGVO)</li>
|
sie sind <em>keine</em> Einwilligung im Sinne von Art. 6 Abs. 1
|
||||||
<li>Recht auf Einschränkung der Verarbeitung (Art. 18 DSGVO)</li>
|
lit. a DSGVO.
|
||||||
<li>Recht auf Datenübertragbarkeit (Art. 20 DSGVO)</li>
|
</li>
|
||||||
<li>Widerspruchsrecht (Art. 21 DSGVO)</li>
|
<li>
|
||||||
<li>Recht auf Widerruf einer Einwilligung (Art. 7 Abs. 3 DSGVO)</li>
|
<strong>Art. 6 Abs. 1 lit. f DSGVO (berechtigte Interessen):</strong>{" "}
|
||||||
|
kurzzeitige Server-Logfiles zur Sicherung des Betriebs und zur
|
||||||
|
Missbrauchsabwehr, Rate-Limiting, Fehlermonitoring über Sentry
|
||||||
|
zur Sicherstellung der Funktionsfähigkeit des Dienstes.
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p className="mt-3 text-gray-600">
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
Zur Ausübung dieser Rechte wenden Sie sich bitte an{" "}
|
<em>English.</em> 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 <strong>not</strong> rely on consent for any of this.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ================================================================
|
||||||
|
4. Server-Logfiles / Server logs
|
||||||
|
================================================================ */}
|
||||||
|
<section className="mt-10">
|
||||||
|
<h2 className="text-xl font-semibold text-gray-900">4. Server-Logfiles</h2>
|
||||||
|
<p className="mt-2 text-gray-700">
|
||||||
|
Beim Aufruf der Dienste werden automatisch technische Informationen
|
||||||
|
protokolliert:
|
||||||
|
</p>
|
||||||
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
|
<li>IP-Adresse</li>
|
||||||
|
<li>Zeitstempel</li>
|
||||||
|
<li>HTTP-Methode, Pfad, Statuscode</li>
|
||||||
|
<li>User-Agent (Browser, Betriebssystem)</li>
|
||||||
|
</ul>
|
||||||
|
<p className="mt-3 text-gray-700">
|
||||||
|
<strong>Zweck:</strong> Sicherheit, Betrieb und Fehlersuche.{" "}
|
||||||
|
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. f DSGVO.{" "}
|
||||||
|
<strong>Speicherdauer:</strong> maximal 14 Tage, danach automatische
|
||||||
|
Löschung. Eine Zusammenführung dieser Daten mit anderen Datenquellen
|
||||||
|
findet nicht statt.
|
||||||
|
</p>
|
||||||
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ================================================================
|
||||||
|
5. Speicherdauer / Storage durations
|
||||||
|
================================================================ */}
|
||||||
|
<section className="mt-10">
|
||||||
|
<h2 className="text-xl font-semibold text-gray-900">5. Speicherdauer</h2>
|
||||||
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
|
<li>Konto und zugehörige Inhalte: bis zur Löschung durch Sie</li>
|
||||||
|
<li>Planner-Sitzungen: automatische Löschung nach 7 Tagen Inaktivität</li>
|
||||||
|
<li>Magic-Link-Token: 15 Minuten</li>
|
||||||
|
<li>Server-Logfiles: maximal 14 Tage</li>
|
||||||
|
<li>Fehlerdaten (Sentry): 90 Tage</li>
|
||||||
|
</ul>
|
||||||
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
|
<em>English.</em> Account and content kept until you delete them.
|
||||||
|
Ephemeral data (sessions, magic-link tokens, logs, Sentry events)
|
||||||
|
deleted automatically on the schedules above.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ================================================================
|
||||||
|
6. Empfänger / Third parties
|
||||||
|
================================================================ */}
|
||||||
|
<section className="mt-10">
|
||||||
|
<h2 className="text-xl font-semibold text-gray-900">6. Empfänger und Drittanbieter</h2>
|
||||||
|
<p className="mt-2 text-gray-700">
|
||||||
|
Wir geben personenbezogene Daten nur an die unten genannten
|
||||||
|
Auftragsverarbeiter und Dritten weiter, und auch dort nur im
|
||||||
|
jeweils notwendigen Umfang.
|
||||||
|
</p>
|
||||||
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-3">
|
||||||
|
<li>
|
||||||
|
<strong>Sentry</strong> (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. <strong>Nicht</strong> übermittelt:
|
||||||
|
IP-Adresse, Cookies, vollständige HTTP-Header
|
||||||
|
(<code>sendDefaultPii</code> ist deaktiviert). Keine
|
||||||
|
Session-Replays. Hosting innerhalb der EU (Frankfurt).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>OpenStreetMap</strong> – Kartenkacheln werden beim Anzeigen
|
||||||
|
der Karten direkt vom Browser von OSM-Tile-Servern geladen. Dabei
|
||||||
|
werden <strong>IP-Adresse und User-Agent</strong> an OSM übertragen.
|
||||||
|
Dies ist notwendig, um überhaupt eine Karte darzustellen; es gilt
|
||||||
|
die{" "}
|
||||||
|
<a
|
||||||
|
className="text-blue-600 hover:underline"
|
||||||
|
href="https://wiki.osmfoundation.org/wiki/Privacy_Policy"
|
||||||
|
>
|
||||||
|
OSM Foundation Privacy Policy
|
||||||
|
</a>
|
||||||
|
.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Overpass API</strong> (POI-Daten) – POI-Abfragen laufen
|
||||||
|
serverseitig über unsere eigene Route <code>/api/overpass</code>.
|
||||||
|
Der Upstream-Dienst sieht nur unsere Server-IP, nicht die Ihrer
|
||||||
|
Nutzer:innen. Aktueller Upstream: <code>overpass.private.coffee</code>
|
||||||
|
, der ohne Query-Logs arbeitet. Eine selbst gehostete Instanz ist
|
||||||
|
geplant.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>BRouter</strong> – Routenberechnung läuft auf einer von uns
|
||||||
|
selbst gehosteten Instanz. Keine Weitergabe an Dritte.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>SMTP-Versand</strong> – 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.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Hosting</strong> – Die Dienste werden in Rechenzentren
|
||||||
|
innerhalb der EU betrieben. Ein Auftragsverarbeitungsvertrag mit
|
||||||
|
dem Hoster besteht.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* ================================================================
|
||||||
|
7. Ihre Rechte / Rights
|
||||||
|
================================================================ */}
|
||||||
|
<section className="mt-10">
|
||||||
|
<h2 className="text-xl font-semibold text-gray-900">7. Ihre Rechte</h2>
|
||||||
|
<p className="mt-2 text-gray-700">
|
||||||
|
Als betroffene Person stehen Ihnen die folgenden Rechte zu:
|
||||||
|
</p>
|
||||||
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
|
<li>Auskunft (Art. 15 DSGVO)</li>
|
||||||
|
<li>Berichtigung (Art. 16 DSGVO)</li>
|
||||||
|
<li>Löschung (Art. 17 DSGVO)</li>
|
||||||
|
<li>Einschränkung der Verarbeitung (Art. 18 DSGVO)</li>
|
||||||
|
<li>Datenübertragbarkeit (Art. 20 DSGVO)</li>
|
||||||
|
<li>Widerspruch gegen Verarbeitung auf Basis berechtigter Interessen (Art. 21 DSGVO)</li>
|
||||||
|
</ul>
|
||||||
|
<p className="mt-3 text-gray-700">
|
||||||
|
Zur Ausübung dieser Rechte genügt eine formlose E-Mail an{" "}
|
||||||
<a className="text-blue-600 hover:underline" href={`mailto:${operator.email}`}>
|
<a className="text-blue-600 hover:underline" href={`mailto:${operator.email}`}>
|
||||||
{operator.email}
|
{operator.email}
|
||||||
</a>
|
</a>
|
||||||
. Ein vollständiger Export Ihrer Daten ist jederzeit direkt über die
|
. Einen vollständigen Export Ihrer Routen und Aktivitäten können Sie
|
||||||
Einstellungen Ihres Kontos möglich (Routen als GPX, Aktivitäten als
|
jederzeit direkt in den Kontoeinstellungen herunterladen (GPX bzw.
|
||||||
GPX/JSON). Sie können Ihr Konto jederzeit selbst löschen.
|
JSON). Ihr Konto samt Inhalten können Sie dort ebenfalls selbst
|
||||||
|
löschen.
|
||||||
|
</p>
|
||||||
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
{/* ================================================================
|
||||||
|
8. Beschwerderecht / Complaint authority
|
||||||
|
================================================================ */}
|
||||||
<section className="mt-10">
|
<section className="mt-10">
|
||||||
<h2 className="text-xl font-semibold text-gray-900">
|
<h2 className="text-xl font-semibold text-gray-900">8. Beschwerderecht</h2>
|
||||||
4. Beschwerderecht / Right to Complain
|
<p className="mt-2 text-gray-700">
|
||||||
</h2>
|
|
||||||
<p className="mt-2 text-gray-600">
|
|
||||||
Sie haben das Recht, sich bei einer Datenschutzaufsichtsbehörde zu
|
Sie haben das Recht, sich bei einer Datenschutzaufsichtsbehörde zu
|
||||||
beschweren. Zuständig für uns ist:
|
beschweren. Für uns zuständig ist:
|
||||||
</p>
|
</p>
|
||||||
<address className="mt-2 not-italic text-gray-700">
|
<address className="mt-2 not-italic text-gray-700">
|
||||||
Berliner Beauftragte für Datenschutz und Informationsfreiheit
|
Berliner Beauftragte für Datenschutz und Informationsfreiheit
|
||||||
|
|
@ -116,135 +316,89 @@ export default function PrivacyPage() {
|
||||||
www.datenschutz-berlin.de
|
www.datenschutz-berlin.de
|
||||||
</a>
|
</a>
|
||||||
</address>
|
</address>
|
||||||
|
<p className="mt-3 text-sm text-gray-600">
|
||||||
|
<em>English.</em> You have the right to lodge a complaint with a
|
||||||
|
supervisory authority; ours is the Berlin data-protection
|
||||||
|
commissioner (address above).
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<hr className="my-10 border-gray-200" />
|
<hr className="my-12 border-gray-200" />
|
||||||
|
|
||||||
{/* Existing privacy manifest (plain-language) */}
|
{/* ================================================================
|
||||||
|
Privacy Manifest (developer-friendly, plain language)
|
||||||
|
================================================================ */}
|
||||||
<h2 className="text-2xl font-bold text-gray-900">Privacy Manifest</h2>
|
<h2 className="text-2xl font-bold text-gray-900">Privacy Manifest</h2>
|
||||||
<p className="mt-4 text-gray-600">
|
<p className="mt-4 text-gray-700">
|
||||||
trails.cool is committed to privacy by design. This manifest documents
|
A plain-language summary of what we do, for readers who prefer
|
||||||
everything we collect, why, and how you can control it.
|
behaviour over paragraphs. Binding text is above.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<section className="mt-10">
|
<section className="mt-8">
|
||||||
<h3 className="text-xl font-semibold text-gray-900">Planner (planner.trails.cool)</h3>
|
<h3 className="text-xl font-semibold text-gray-900">Planner (planner.trails.cool)</h3>
|
||||||
<p className="mt-2 text-gray-600">
|
<p className="mt-2 text-gray-700">
|
||||||
The Planner collects <strong>no personal data</strong>. Sessions are anonymous —
|
Anonymous by design. No account, no identifier, nothing persisted
|
||||||
there are no user accounts, no tracking, and no analytics on your routes.
|
past the session.
|
||||||
</p>
|
</p>
|
||||||
<ul className="mt-3 list-disc pl-6 text-gray-600 space-y-1">
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
<li>No cookies, no localStorage, no sessionStorage</li>
|
<li>No cookies, no localStorage, no sessionStorage</li>
|
||||||
<li>No user accounts or login</li>
|
<li>No browser-side error tracking (Sentry is not loaded)</li>
|
||||||
<li>No browser-side error tracking (Sentry is not loaded in the Planner)</li>
|
<li>Session data is deleted automatically after 7 days of inactivity</li>
|
||||||
<li>No route data is stored permanently without your action</li>
|
|
||||||
<li>Session data is automatically deleted after 7 days of inactivity</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="mt-10">
|
<section className="mt-8">
|
||||||
<h3 className="text-xl font-semibold text-gray-900">Journal (trails.cool)</h3>
|
<h3 className="text-xl font-semibold text-gray-900">Journal (trails.cool)</h3>
|
||||||
<p className="mt-2 text-gray-600">
|
<p className="mt-2 text-gray-700">
|
||||||
The Journal stores the data you explicitly provide:
|
Holds only what you put in. Exportable any time, deletable any time.
|
||||||
</p>
|
</p>
|
||||||
<ul className="mt-3 list-disc pl-6 text-gray-600 space-y-1">
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
<li><strong>Account data</strong>: email, username, display name, passkey credentials</li>
|
<li>Account: email, username, display name, passkey public key</li>
|
||||||
<li><strong>Routes</strong>: name, description, GPX data, geometry</li>
|
<li>Routes: GPX, geometry, title, description</li>
|
||||||
<li><strong>Activities</strong>: title, description, date, linked routes</li>
|
<li>Activities: title, description, date, linked route</li>
|
||||||
|
<li>GPX / JSON export available per object and overall</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p className="mt-3 text-gray-600">
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="mt-10">
|
<section className="mt-8">
|
||||||
<h3 className="text-xl font-semibold text-gray-900">Error Tracking (Sentry)</h3>
|
<h3 className="text-xl font-semibold text-gray-900">Sentry</h3>
|
||||||
<p className="mt-2 text-gray-600">
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
We use <a href="https://sentry.io" className="text-blue-600 hover:underline">Sentry</a> for
|
<li>Journal server: always on</li>
|
||||||
error monitoring, scoped narrowly by design.
|
<li>Journal browser: only after login, torn down on logout</li>
|
||||||
</p>
|
<li>Planner: server only; the browser never loads Sentry</li>
|
||||||
<h4 className="mt-4 font-medium text-gray-800">Where Sentry runs:</h4>
|
<li>No IPs, no cookies, no headers (<code>sendDefaultPii: false</code>)</li>
|
||||||
<ul className="mt-2 list-disc pl-6 text-gray-600 space-y-1">
|
<li>No replays (replay integration not installed, sample rates 0)</li>
|
||||||
<li><strong>Journal, logged-out</strong>: server-side only. The browser-side Sentry SDK is not loaded until you log in.</li>
|
<li>User ID only (no email/username) on Journal-logged-in events</li>
|
||||||
<li><strong>Journal, logged-in</strong>: Sentry initialises in the browser after login and is torn down on logout.</li>
|
|
||||||
<li><strong>Planner</strong>: server-side only. The browser-side Planner does not load Sentry at all.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<h4 className="mt-4 font-medium text-gray-800">What Sentry collects:</h4>
|
|
||||||
<ul className="mt-2 list-disc pl-6 text-gray-600 space-y-1">
|
|
||||||
<li><strong>Error details</strong>: stack traces, error messages, browser/OS info derived from the User-Agent</li>
|
|
||||||
<li><strong>Performance traces</strong>: page load times, route navigation timing</li>
|
|
||||||
<li><strong>User ID</strong> (Journal, logged-in only): just the user ID — not username, email, or IP</li>
|
|
||||||
</ul>
|
|
||||||
<h4 className="mt-4 font-medium text-gray-800">What Sentry does NOT collect:</h4>
|
|
||||||
<ul className="mt-2 list-disc pl-6 text-gray-600 space-y-1">
|
|
||||||
<li>Session replays or DOM recordings — replay integration is not installed and sample rates are 0</li>
|
|
||||||
<li>IP addresses, cookies, or full HTTP headers — <code>sendDefaultPii</code> is set to <code>false</code> everywhere</li>
|
|
||||||
<li>Route or GPX data</li>
|
|
||||||
<li>Passwords or passkey credentials</li>
|
|
||||||
<li>Form input contents</li>
|
|
||||||
</ul>
|
|
||||||
<h4 className="mt-4 font-medium text-gray-800">Data retention:</h4>
|
|
||||||
<p className="mt-2 text-gray-600">
|
|
||||||
Sentry data is retained for 90 days and then automatically deleted.
|
|
||||||
Sentry's servers are hosted in the EU (Frankfurt).
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="mt-10">
|
<section className="mt-8">
|
||||||
<h3 className="text-xl font-semibold text-gray-900">Email</h3>
|
<h3 className="text-xl font-semibold text-gray-900">What we don't do</h3>
|
||||||
<p className="mt-2 text-gray-600">
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
The Journal sends transactional emails for magic link login and welcome messages
|
<li>Sell data</li>
|
||||||
via SMTP. On the official instance, emails are sent through our own mail server.
|
<li>Show ads</li>
|
||||||
</p>
|
<li>Build user profiles</li>
|
||||||
<h4 className="mt-4 font-medium text-gray-800">What is sent via email:</h4>
|
<li>Run tracking pixels, analytics, or A/B tests</li>
|
||||||
<ul className="mt-2 list-disc pl-6 text-gray-600 space-y-1">
|
|
||||||
<li><strong>Magic link</strong>: a one-time login link sent to your email address</li>
|
|
||||||
<li><strong>Welcome email</strong>: a greeting after registration</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<p className="mt-3 text-gray-600">
|
|
||||||
Self-hosted instances can configure their own SMTP server. No email content
|
|
||||||
is stored beyond what your mail server retains.
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="mt-10">
|
<section className="mt-8">
|
||||||
<h3 className="text-xl font-semibold text-gray-900">Third Parties</h3>
|
<h3 className="text-xl font-semibold text-gray-900">Security</h3>
|
||||||
<ul className="mt-3 list-disc pl-6 text-gray-600 space-y-1">
|
<ul className="mt-3 list-disc pl-6 text-gray-700 space-y-1">
|
||||||
<li><strong>Sentry</strong> (Functional Software Inc.) — error tracking, as described above</li>
|
<li>Auth via passkey (WebAuthn) or magic link — no passwords stored</li>
|
||||||
<li><strong>OpenStreetMap</strong> — map tiles are loaded from OSM tile servers. OSM's <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy" className="text-blue-600 hover:underline">privacy policy</a> applies to tile requests.</li>
|
<li>HTTPS + HSTS preload on all origins; session cookies httpOnly + Secure</li>
|
||||||
<li><strong>BRouter</strong> — routing requests are processed by our self-hosted BRouter instance. No data is sent to third parties for routing.</li>
|
<li>CSP, X-Frame-Options, X-Content-Type-Options on every response</li>
|
||||||
|
<li>Containers run non-root; host firewall restricts to HTTP/HTTPS/SSH</li>
|
||||||
|
<li>Gitleaks + dependency audit on every PR</li>
|
||||||
<li>
|
<li>
|
||||||
<strong>Overpass API</strong> — POI overlay data is fetched via the Overpass API. Requests are proxied
|
Vulnerability reports:{" "}
|
||||||
through our own server (<code>/api/overpass</code>), so the upstream Overpass host sees our server rather
|
<a
|
||||||
than end users' IP addresses or browsers. The current upstream is{" "}
|
className="text-blue-600 hover:underline"
|
||||||
<a href="https://private.coffee" className="text-blue-600 hover:underline">overpass.private.coffee</a>,
|
href="https://github.com/trails-cool/trails/blob/main/SECURITY.md"
|
||||||
which operates without query logging. A self-hosted Overpass instance is planned.
|
>
|
||||||
|
SECURITY.md
|
||||||
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li><strong>SMTP provider</strong> — transactional emails (magic link, welcome) are delivered via SMTP. Self-hosters configure their own provider.</li>
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section className="mt-10">
|
|
||||||
<h3 className="text-xl font-semibold text-gray-900">What We Don't Do</h3>
|
|
||||||
<ul className="mt-3 list-disc pl-6 text-gray-600 space-y-1">
|
|
||||||
<li>We don't sell data</li>
|
|
||||||
<li>We don't show ads</li>
|
|
||||||
<li>We don't build user profiles</li>
|
|
||||||
<li>We don't use tracking pixels or analytics</li>
|
|
||||||
<li>We don't share data with anyone except as listed above</li>
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section className="mt-10">
|
|
||||||
<h3 className="text-xl font-semibold text-gray-900">Security Practices</h3>
|
|
||||||
<ul className="mt-3 list-disc pl-6 text-gray-600 space-y-1">
|
|
||||||
<li><strong>Authentication</strong>: Passkey (WebAuthn) and magic link login. No passwords stored.</li>
|
|
||||||
<li><strong>Encryption</strong>: All traffic over HTTPS with HSTS preload. Cookies are httpOnly and secure.</li>
|
|
||||||
<li><strong>Headers</strong>: Content-Security-Policy, X-Frame-Options, X-Content-Type-Options on all responses.</li>
|
|
||||||
<li><strong>Infrastructure</strong>: Docker containers run as non-root. Firewall restricts to HTTP/HTTPS/SSH only.</li>
|
|
||||||
<li><strong>CI/CD</strong>: Gitleaks secret scanning and dependency auditing on every pull request.</li>
|
|
||||||
<li><strong>Vulnerability reporting</strong>: See our <a href="https://github.com/trails-cool/trails/blob/main/SECURITY.md" className="text-blue-600 hover:underline">SECURITY.md</a> for responsible disclosure.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
export function meta() {
|
export function meta() {
|
||||||
return [
|
return [
|
||||||
{ title: "Terms of Service — trails.cool" },
|
{ title: "Nutzungsbedingungen — trails.cool" },
|
||||||
{ name: "robots", content: "noindex" },
|
{ name: "robots", content: "noindex" },
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -12,175 +12,217 @@ export default function TermsPage() {
|
||||||
Nutzungsbedingungen / Terms of Service
|
Nutzungsbedingungen / Terms of Service
|
||||||
</h1>
|
</h1>
|
||||||
<p className="mt-2 text-sm text-gray-500">
|
<p className="mt-2 text-sm text-gray-500">
|
||||||
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.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{/* Deutsche Fassung (maßgebend) */}
|
<section className="mt-10 space-y-6 text-gray-700">
|
||||||
<section className="mt-10 space-y-4 text-gray-700">
|
<div>
|
||||||
<h2 className="text-xl font-semibold text-gray-900">Deutsche Fassung</h2>
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
|
1. Gegenstand und Alpha-Status
|
||||||
|
</h2>
|
||||||
|
<p className="mt-2 text-sm">
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
1. Gegenstand und Alpha-Status
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
2. Mindestalter
|
||||||
<p className="text-sm">
|
</h2>
|
||||||
trails.cool ist ein experimenteller Dienst zur Planung und Dokumentation
|
<p className="mt-2 text-sm">
|
||||||
von Outdoor-Aktivitäten. Der Dienst befindet sich in aktiver Entwicklung
|
Die Nutzung eines Journal-Kontos ist erst ab einem Alter von 16
|
||||||
(Alpha). Funktionen, Schnittstellen und gespeicherte Daten können
|
Jahren zulässig. Anonyme Nutzung des Planners unterliegt keiner
|
||||||
jederzeit ohne Vorankündigung geändert, gelöscht oder eingestellt
|
Altersbeschränkung.
|
||||||
werden. Eine Verfügbarkeitsgarantie besteht nicht.
|
</p>
|
||||||
</p>
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> A Journal account is available only to users
|
||||||
|
aged 16 or older. Anonymous use of the Planner has no age
|
||||||
|
requirement.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
2. Zurücksetzen der Datenbank
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
3. Dienstverfügbarkeit
|
||||||
<p className="text-sm">
|
</h2>
|
||||||
Während der Alpha-Phase behält sich der Betreiber ausdrücklich das Recht
|
<p className="mt-2 text-sm">
|
||||||
vor, die gesamte Datenbank zurückzusetzen oder einzelne Datensätze ohne
|
Der Betreiber kann den Dienst jederzeit ändern, einschränken,
|
||||||
vorherige Benachrichtigung zu löschen. Nutzer:innen sollten wichtige
|
unterbrechen oder einstellen, auch einzelne Funktionen oder
|
||||||
Routen und Aktivitäten selbstständig über die Export-Funktion (GPX)
|
einzelne Konten. Wartungs- und Ausfallzeiten sind möglich.
|
||||||
sichern.
|
</p>
|
||||||
</p>
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
3. Haftungsausschluss
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
4. Zurücksetzen der Datenbank
|
||||||
<p className="text-sm">
|
</h2>
|
||||||
Der Dienst wird ohne jegliche Gewährleistung bereitgestellt. Eine Haftung
|
<p className="mt-2 text-sm">
|
||||||
für Schäden, die durch die Nutzung oder Nichtverfügbarkeit des Dienstes
|
Während der Alpha-Phase behält sich der Betreiber ausdrücklich das
|
||||||
entstehen, ist ausgeschlossen, soweit dies gesetzlich zulässig ist. Bei
|
Recht vor, die gesamte Datenbank zurückzusetzen oder einzelne
|
||||||
Vorsatz und grober Fahrlässigkeit sowie bei Verletzung von Leben, Körper
|
Datensätze ohne vorherige Benachrichtigung zu löschen.
|
||||||
und Gesundheit gelten die gesetzlichen Vorschriften.
|
Nutzer:innen sollten wichtige Routen und Aktivitäten selbstständig
|
||||||
</p>
|
über die Export-Funktion (GPX bzw. JSON) sichern.
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> During alpha, the operator may reset the entire
|
||||||
|
database or delete individual records without notice. Back up
|
||||||
|
anything important via the GPX / JSON export.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
4. Nutzungsregeln
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
5. Eigenverantwortung für Daten
|
||||||
<ul className="ml-6 list-disc space-y-1 text-sm">
|
</h2>
|
||||||
<li>Keine Verbreitung rechtswidriger Inhalte</li>
|
<p className="mt-2 text-sm">
|
||||||
<li>Keine missbräuchliche Nutzung (Spam, automatisierte Abfragen in
|
Nutzer:innen sind für die Sicherung ihrer Inhalte selbst
|
||||||
hoher Frequenz, Denial-of-Service)
|
verantwortlich. GPX- und JSON-Exporte sind im Journal jederzeit
|
||||||
</li>
|
für jede Route und Aktivität verfügbar. Der Betreiber schuldet
|
||||||
<li>Kein Umgehen technischer Schutzmaßnahmen</li>
|
keine Datenwiederherstellung.
|
||||||
</ul>
|
</p>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> You are responsible for backing up your own
|
||||||
|
content. Exports are always available in the Journal; the
|
||||||
|
operator owes no data recovery.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
5. Eigenverantwortung für Daten
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
6. Inhalte und Nutzungsrechte
|
||||||
<p className="text-sm">
|
</h2>
|
||||||
Nutzer:innen sind dafür verantwortlich, regelmäßig Sicherungskopien ihrer
|
<p className="mt-2 text-sm">
|
||||||
Routen und Aktivitäten anzufertigen. GPX-Exporte sind im Journal für
|
Die von Ihnen eingestellten Inhalte (Routen, Aktivitäten,
|
||||||
jede Route und Aktivität verfügbar.
|
Beschreibungen, GPX-Dateien) bleiben Ihr Eigentum. Sie räumen dem
|
||||||
</p>
|
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.
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
6. Beendigung
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
7. Nutzungsregeln
|
||||||
<p className="text-sm">
|
</h2>
|
||||||
Nutzer:innen können ihr Konto jederzeit über die Einstellungen löschen.
|
<ul className="mt-2 ml-6 list-disc space-y-1 text-sm">
|
||||||
Der Betreiber kann Konten bei Verstößen gegen diese Bedingungen sperren
|
<li>Keine Verbreitung rechtswidriger Inhalte</li>
|
||||||
oder löschen.
|
<li>
|
||||||
</p>
|
Keine missbräuchliche Nutzung (Spam, hochfrequente automatisierte
|
||||||
|
Abfragen, Denial-of-Service)
|
||||||
|
</li>
|
||||||
|
<li>Kein Umgehen technischer Schutzmaßnahmen</li>
|
||||||
|
<li>
|
||||||
|
Keine Verwendung des Dienstes zum Aufbau konkurrierender
|
||||||
|
Angebote durch massenhaftes Abziehen von Daten
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> No illegal content, no abuse (spam, flooding,
|
||||||
|
DoS), no circumvention of technical protections, no bulk scraping
|
||||||
|
to build competing services.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
7. Änderungen
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
8. Kontobeendigung
|
||||||
<p className="text-sm">
|
</h2>
|
||||||
Diese Nutzungsbedingungen können sich während der Alpha-Phase ändern. Bei
|
<p className="mt-2 text-sm">
|
||||||
wesentlichen Änderungen werden registrierte Nutzer:innen per E-Mail
|
Sie können Ihr Konto jederzeit über die Einstellungen löschen;
|
||||||
informiert und müssen die neuen Bedingungen erneut bestätigen.
|
damit werden auch die zugehörigen Inhalte gelöscht. Der Betreiber
|
||||||
</p>
|
kann Konten bei Verstößen gegen diese Bedingungen nach
|
||||||
|
angemessener Interessenabwägung sperren oder löschen.
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> Delete your account (and its content) any time
|
||||||
|
via settings. The operator may suspend or delete accounts that
|
||||||
|
violate these terms, balancing interests reasonably.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
<div>
|
||||||
8. Anwendbares Recht
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
</h3>
|
9. Haftung
|
||||||
<p className="text-sm">
|
</h2>
|
||||||
Es gilt deutsches Recht unter Ausschluss des UN-Kaufrechts. Verbraucher:innen
|
<p className="mt-2 text-sm">
|
||||||
mit gewöhnlichem Aufenthalt in der EU genießen den zwingenden Schutz
|
Der Dienst wird ohne Gewährleistung bereitgestellt. Der Betreiber
|
||||||
ihres nationalen Verbraucherrechts.
|
haftet uneingeschränkt bei Vorsatz und grober Fahrlässigkeit sowie
|
||||||
</p>
|
bei Verletzung von Leben, Körper oder Gesundheit. Im Übrigen ist
|
||||||
</section>
|
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.
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> 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.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<hr className="my-12 border-gray-200" />
|
<div>
|
||||||
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
|
10. Änderungen der Bedingungen
|
||||||
|
</h2>
|
||||||
|
<p className="mt-2 text-sm">
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
|
<em>English.</em> These terms may change during alpha. Registered
|
||||||
|
users will be emailed about material changes and prompted to
|
||||||
|
re-accept.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* English translation (informational) */}
|
<div>
|
||||||
<section className="space-y-4 text-gray-700">
|
<h2 className="text-lg font-semibold text-gray-900">
|
||||||
<h2 className="text-xl font-semibold text-gray-900">English version</h2>
|
11. Anwendbares Recht
|
||||||
<p className="text-xs text-gray-500">
|
</h2>
|
||||||
The German version is authoritative. This English text is a translation
|
<p className="mt-2 text-sm">
|
||||||
for convenience.
|
Es gilt deutsches Recht unter Ausschluss des UN-Kaufrechts. Für
|
||||||
</p>
|
Verbraucher:innen mit gewöhnlichem Aufenthalt in einem Mitgliedstaat
|
||||||
|
der Europäischen Union bleibt der zwingende Schutz des Rechts ihres
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
Aufenthaltslandes unberührt.
|
||||||
1. Alpha status
|
</p>
|
||||||
</h3>
|
<p className="mt-2 text-xs text-gray-600">
|
||||||
<p className="text-sm">
|
<em>English.</em> German law applies, excluding the UN Convention
|
||||||
trails.cool is an experimental service for planning and documenting
|
on Contracts for the International Sale of Goods. Consumers
|
||||||
outdoor activities. It is under active development (alpha). Features,
|
habitually residing in an EU member state retain the mandatory
|
||||||
APIs, and stored data may change, be deleted, or be discontinued at any
|
protection of their national law.
|
||||||
time without notice. No availability is guaranteed.
|
</p>
|
||||||
</p>
|
</div>
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
|
||||||
2. Database resets
|
|
||||||
</h3>
|
|
||||||
<p className="text-sm">
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
|
||||||
3. No warranty
|
|
||||||
</h3>
|
|
||||||
<p className="text-sm">
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
|
||||||
4. Acceptable use
|
|
||||||
</h3>
|
|
||||||
<ul className="ml-6 list-disc space-y-1 text-sm">
|
|
||||||
<li>No illegal content</li>
|
|
||||||
<li>No abusive use (spam, high-frequency automated requests, denial of service)</li>
|
|
||||||
<li>No circumvention of technical protections</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
|
||||||
5. Data responsibility
|
|
||||||
</h3>
|
|
||||||
<p className="text-sm">
|
|
||||||
Users are responsible for regularly backing up their routes and
|
|
||||||
activities. GPX exports are available in the Journal for every route
|
|
||||||
and activity.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
|
||||||
6. Termination
|
|
||||||
</h3>
|
|
||||||
<p className="text-sm">
|
|
||||||
Users can delete their account at any time via settings. The operator
|
|
||||||
may suspend or delete accounts that violate these terms.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
|
||||||
7. Changes
|
|
||||||
</h3>
|
|
||||||
<p className="text-sm">
|
|
||||||
These terms may change during alpha. Registered users will be notified
|
|
||||||
by email of material changes and must re-accept the updated terms.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3 className="mt-6 text-base font-semibold text-gray-900">
|
|
||||||
8. Governing law
|
|
||||||
</h3>
|
|
||||||
<p className="text-sm">
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue