From 54bf150d657c2645b36d1b5295a58bfb3a4fd32e Mon Sep 17 00:00:00 2001 From: Alexander Schmidt Date: Sat, 7 Feb 2026 17:18:39 +0100 Subject: [PATCH] feat: register privacy/terms routes and unify legal page layouts --- docs/PRIVACY.md | 122 ++++++++++ docs/TERMS.md | 143 ++++++++++++ js/components/app-shell.js | 4 + js/components/pages/page-privacy.js | 261 ++++++++++++++++++++++ js/components/pages/page-terms.js | 332 ++++++++++++++++++++++++++++ 5 files changed, 862 insertions(+) create mode 100644 docs/PRIVACY.md create mode 100644 docs/TERMS.md create mode 100644 js/components/pages/page-privacy.js create mode 100644 js/components/pages/page-terms.js diff --git a/docs/PRIVACY.md b/docs/PRIVACY.md new file mode 100644 index 0000000..9a1cddb --- /dev/null +++ b/docs/PRIVACY.md @@ -0,0 +1,122 @@ +# Datenschutzerklärung + +**dgray.io — Anonymer Marktplatz** +Stand: Februar 2026 + +--- + +## 1. Verantwortlicher + +Verantwortlich für die Datenbearbeitung ist der Betreiber der Plattform dgray.io mit Sitz in der Schweiz. + +--- + +## 2. Grundsatz + +Die Plattform wurde nach dem Prinzip der Datensparsamkeit konzipiert. Es werden nur die technisch notwendigen Daten erhoben und verarbeitet. + +--- + +## 3. Welche Daten werden erhoben? + +### 3.1 Daten, die wir NICHT erheben +- Keine E-Mail-Adressen +- Keine Namen oder Klarnamen +- Keine Telefonnummern +- Keine Standortdaten der Nutzer/innen +- Keine Zahlungsdaten (Monero-Transaktionen sind nicht rückverfolgbar) + +### 3.2 Daten bei der Registrierung +- Ein kryptografischer Hash (SHA-256) der UUID wird als Benutzerkennung gespeichert. Die UUID selbst wird nicht gespeichert und kann vom Betreiber nicht wiederhergestellt werden. + +### 3.3 Daten bei der Nutzung +- **Anzeigen:** Titel, Beschreibung, Preis, Kategorie, Standort (vom Nutzer freiwillig gewählt), Bilder +- **Nachrichten:** Ende-zu-Ende verschlüsselt. Der Betreiber speichert nur den Ciphertext und kann den Inhalt nicht einsehen. +- **Favoriten:** Werden lokal im Browser gespeichert. Bei Anmeldung optional mit dem Server synchronisiert. + +### 3.4 Technische Daten +- Server-Logdateien können temporär IP-Adressen, Zugriffszeiten und User-Agent-Strings enthalten. Diese werden regelmässig gelöscht und nicht mit Nutzerkonten verknüpft. + +--- + +## 4. Cookies und lokale Speicherung + +4.1 Die Plattform verwendet **keine Cookies** für Tracking oder Analyse. + +4.2 Folgende Daten werden im localStorage des Browsers gespeichert: +- Spracheinstellung +- Theme-Präferenz (Hell/Dunkel) +- Währungspräferenz +- Auth-Token (für die Sitzung) +- Favoriten (lokal) +- Kategorie-Cache + +4.3 Diese Daten verlassen den Browser nicht und können jederzeit durch Löschen der Browserdaten entfernt werden. + +--- + +## 5. Drittdienste + +### 5.1 Directus (Backend) +- Selbst gehostet auf eigenen Servern +- Keine Datenübertragung an Dritte + +### 5.2 BTCPay Server (Zahlungen) +- Für die Verarbeitung von Monero-Zahlungen +- Es werden keine personenbezogenen Daten übertragen, lediglich Anzeigen-IDs und Zahlungsbeträge + +### 5.3 CoinGecko API (Wechselkurse) +- Für die Anzeige aktueller XMR-Wechselkurse +- Es werden keine personenbezogenen Daten übertragen + +--- + +## 6. Verschlüsselung + +6.1 Die Kommunikation zwischen Nutzer/innen ist Ende-zu-Ende verschlüsselt (NaCl/TweetNaCl). + +6.2 Die Verschlüsselungsschlüssel werden im Browser der Nutzer/innen generiert und gespeichert. Der Betreiber hat keinen Zugang zu den privaten Schlüsseln. + +6.3 Der Server speichert ausschliesslich verschlüsselten Ciphertext. + +--- + +## 7. Datenweitergabe + +7.1 Es erfolgt keine Weitergabe von Daten an Dritte zu Werbe- oder Marketingzwecken. + +7.2 Eine Herausgabe von Daten erfolgt nur bei rechtlicher Verpflichtung durch Schweizer Behörden. Aufgrund der minimalen Datenhaltung und der Ende-zu-Ende-Verschlüsselung sind die verfügbaren Daten jedoch begrenzt. + +--- + +## 8. Rechte der Nutzer/innen + +8.1 **Auskunft:** Nutzer/innen können Auskunft über die zu ihrem Hash gespeicherten Daten verlangen. + +8.2 **Löschung:** Durch Löschen des Accounts werden alle zugehörigen Daten (Anzeigen, Konversationen) entfernt. + +8.3 **Datenportabilität:** Anzeigendaten können auf Anfrage exportiert werden. + +--- + +## 9. Aufbewahrungsdauer + +- **Anzeigen:** 30 Tage nach Veröffentlichung, danach archiviert +- **Nachrichten:** Bis zur Löschung durch Nutzer/in oder Account-Löschung +- **Server-Logs:** Maximal 7 Tage + +--- + +## 10. Anwendbares Recht + +Es gilt das Schweizer Bundesgesetz über den Datenschutz (DSG) in der jeweils gültigen Fassung. + +--- + +## 11. Änderungen + +Der Betreiber behält sich vor, diese Datenschutzerklärung jederzeit anzupassen. Die aktuelle Fassung ist auf der Plattform einsehbar. + +--- + +*Letzte Aktualisierung: Februar 2026* diff --git a/docs/TERMS.md b/docs/TERMS.md new file mode 100644 index 0000000..41f200a --- /dev/null +++ b/docs/TERMS.md @@ -0,0 +1,143 @@ +# Allgemeine Geschäftsbedingungen (AGB) + +**dgray.io — Anonymer Marktplatz** +Stand: Februar 2026 + +--- + +## 1. Geltungsbereich + +1.1 Diese Allgemeinen Geschäftsbedingungen (nachfolgend «AGB») regeln die Nutzung der Plattform dgray.io (nachfolgend «Plattform»). + +1.2 Die Plattform wird betrieben von einer natürlichen Person mit Sitz in der Schweiz (nachfolgend «Betreiber»). + +1.3 Mit der Nutzung der Plattform erklärt sich die nutzende Person (nachfolgend «Nutzer/in») mit diesen AGB einverstanden. + +--- + +## 2. Leistungen der Plattform + +2.1 Die Plattform stellt einen Online-Marktplatz zur Verfügung, auf dem Nutzer/innen Anzeigen für Waren und Dienstleistungen veröffentlichen und untereinander kommunizieren können. + +2.2 Die Plattform ist lediglich Vermittlerin und wird nicht Vertragspartei der zwischen den Nutzer/innen geschlossenen Kauf-, Tausch- oder Dienstleistungsverträge. + +2.3 Der Betreiber übernimmt keine Gewähr für die Richtigkeit, Vollständigkeit oder Qualität der veröffentlichten Anzeigen. + +--- + +## 3. Registrierung und Accounts + +3.1 Die Nutzung der Plattform erfordert keine Angabe persönlicher Daten. Die Registrierung erfolgt über eine anonyme UUID (Universally Unique Identifier). + +3.2 Die UUID ist der einzige Zugang zum Account. Es besteht keine Möglichkeit, eine verlorene UUID wiederherzustellen. Die Nutzer/in ist für die sichere Aufbewahrung selbst verantwortlich. + +3.3 Pro Person darf nur ein aktiver Account geführt werden. Der Betreiber behält sich vor, Mehrfach-Accounts ohne Vorankündigung zu sperren. + +--- + +## 4. Anzeigen + +4.1 Nutzer/innen können Anzeigen für legale Waren und Dienstleistungen veröffentlichen. + +4.2 Folgende Inhalte sind untersagt: +- Illegale Waren und Dienstleistungen +- Waffen, Munition und Sprengstoff +- Betäubungsmittel und psychoaktive Substanzen +- Gefälschte Produkte und Markenrechtsverletzungen +- Gestohlene Waren +- Pornografische Inhalte mit Minderjährigen +- Inhalte, die gegen geltendes Recht verstossen +- Betrügerische oder irreführende Angebote + +4.3 Der Betreiber behält sich vor, Anzeigen ohne Angabe von Gründen zu entfernen. + +4.4 Anzeigen sind zeitlich begrenzt (30 Tage ab Veröffentlichung) und werden danach automatisch archiviert. + +--- + +## 5. Gebühren und Zahlungen + +5.1 Die Veröffentlichung einer Anzeige ist gebührenpflichtig. Die aktuelle Gebühr wird vor der Veröffentlichung angezeigt. + +5.2 Die Bezahlung erfolgt ausschliesslich in Monero (XMR) über den integrierten Zahlungsdienst. + +5.3 Bezahlte Gebühren werden nicht erstattet, auch wenn eine Anzeige vorzeitig entfernt wird. + +5.4 Transaktionen zwischen Nutzer/innen erfolgen direkt und ohne Beteiligung der Plattform. Der Betreiber haftet nicht für die Abwicklung, Lieferung oder Qualität der gehandelten Waren und Dienstleistungen. + +--- + +## 6. Kommunikation + +6.1 Die Plattform stellt einen Ende-zu-Ende verschlüsselten Chat zur Verfügung. Der Betreiber hat keinen Zugang zu den Nachrichteninhalten. + +6.2 Die Nutzer/innen sind für den Inhalt ihrer Nachrichten selbst verantwortlich. + +--- + +## 7. Haftung + +7.1 Der Betreiber haftet nicht für: +- Schäden aus Transaktionen zwischen Nutzer/innen +- Verlust von Kryptowährungen durch fehlerhafte Adressen oder Transaktionen +- Verlust des Zugangs durch verlorene UUID +- Verfügbarkeit oder Unterbrechungen der Plattform +- Inhalte, die von Nutzer/innen veröffentlicht werden + +7.2 Die Haftung des Betreibers ist in jedem Fall auf die von der betroffenen Nutzer/in bezahlten Gebühren beschränkt. + +7.3 Der Betreiber haftet nicht für indirekte Schäden, entgangenen Gewinn oder Folgeschäden. + +--- + +## 8. Datenschutz + +8.1 Die Plattform erhebt und speichert so wenig personenbezogene Daten wie technisch möglich. + +8.2 Es werden keine E-Mail-Adressen, Namen oder Standortdaten der Nutzer/innen gespeichert. Die Identifikation erfolgt ausschliesslich über einen kryptografischen Hash der UUID. + +8.3 Nachrichten sind Ende-zu-Ende verschlüsselt. Der Betreiber kann deren Inhalt nicht einsehen. + +8.4 Bilder, die zu Anzeigen hochgeladen werden, werden auf den Servern des Betreibers gespeichert und bei Löschung der Anzeige entfernt. + +8.5 Es werden keine Analyse- oder Tracking-Dienste (z.B. Google Analytics) eingesetzt. + +8.6 Die Plattform verwendet localStorage im Browser zur Speicherung von Einstellungen (Sprache, Währung, Theme). Diese Daten verlassen den Browser nicht. + +8.7 Server-Logs (IP-Adressen, Zugriffszeiten) können aus technischen Gründen temporär gespeichert werden und werden regelmässig gelöscht. + +--- + +## 9. Sperrung und Kündigung + +9.1 Die Nutzer/in kann ihren Account jederzeit durch Löschen der UUID beenden. + +9.2 Der Betreiber behält sich vor, Accounts oder Anzeigen bei Verstössen gegen diese AGB ohne Vorankündigung zu sperren oder zu löschen. + +9.3 Ein Anspruch auf Rückerstattung bezahlter Gebühren besteht bei einer Sperrung nicht. + +--- + +## 10. Änderungen der AGB + +10.1 Der Betreiber behält sich vor, diese AGB jederzeit zu ändern. + +10.2 Die jeweils aktuelle Fassung ist auf der Plattform einsehbar. Durch die weitere Nutzung der Plattform nach einer Änderung akzeptiert die Nutzer/in die neuen AGB. + +--- + +## 11. Anwendbares Recht und Gerichtsstand + +11.1 Es gilt ausschliesslich Schweizer Recht unter Ausschluss der kollisionsrechtlichen Bestimmungen und des UN-Kaufrechts (CISG). + +11.2 Gerichtsstand ist der Sitz des Betreibers in der Schweiz, soweit gesetzlich zulässig. + +--- + +## 12. Salvatorische Klausel + +Sollten einzelne Bestimmungen dieser AGB unwirksam sein oder werden, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt. An die Stelle der unwirksamen Bestimmung tritt eine Regelung, die dem wirtschaftlichen Zweck der unwirksamen Bestimmung am nächsten kommt. + +--- + +*Letzte Aktualisierung: Februar 2026* diff --git a/js/components/app-shell.js b/js/components/app-shell.js index 26725d3..986e6f2 100644 --- a/js/components/app-shell.js +++ b/js/components/app-shell.js @@ -13,6 +13,8 @@ import './pages/page-messages.js' import './pages/page-settings.js' import './pages/page-notifications.js' import './pages/page-not-found.js' +import './pages/page-privacy.js' +import './pages/page-terms.js' class AppShell extends HTMLElement { constructor() { @@ -55,6 +57,8 @@ class AppShell extends HTMLElement { .register('/messages', 'page-messages') .register('/settings', 'page-settings') .register('/notifications', 'page-notifications') + .register('/privacy', 'page-privacy') + .register('/terms', 'page-terms') router.handleRouteChange() } diff --git a/js/components/pages/page-privacy.js b/js/components/pages/page-privacy.js new file mode 100644 index 0000000..4470a1a --- /dev/null +++ b/js/components/pages/page-privacy.js @@ -0,0 +1,261 @@ +import { getCurrentLanguage, i18n } from '../../i18n.js' + +class PagePrivacy extends HTMLElement { + connectedCallback() { + this.render() + this.unsubscribe = i18n.subscribe(() => this.render()) + } + + disconnectedCallback() { + if (this.unsubscribe) this.unsubscribe() + } + + getContent(lang) { + const content = { + de: /* html */` +

Datenschutzerklärung

+ + +

1. Verantwortlicher

+

Verantwortlich für die Datenbearbeitung ist der Betreiber der Plattform dgray.io mit Sitz in der Schweiz.

+ +

2. Grundsatz

+

Die Plattform wurde nach dem Prinzip der Datensparsamkeit konzipiert.

+ +

3. Welche Daten werden erhoben?

+

3.1 Daten, die wir NICHT erheben: Keine E-Mail-Adressen, keine Namen, keine Telefonnummern, keine Standortdaten der Nutzer, keine Zahlungsdaten.

+

3.2 Registrierung: Ein kryptografischer Hash (SHA-256) der UUID wird als Benutzerkennung gespeichert. Die UUID selbst wird nicht gespeichert.

+

3.3 Nutzung: Anzeigen (Titel, Beschreibung, Preis, Kategorie, Standort, Bilder), Nachrichten (Ende-zu-Ende verschlüsselt, nur Ciphertext gespeichert), Favoriten (lokal im Browser).

+

3.4 Technische Daten: Server-Logs können temporär IP-Adressen und Zugriffszeiten enthalten.

+ +

4. Cookies und lokale Speicherung

+

4.1 Keine Cookies für Tracking oder Analyse.

+

4.2 localStorage: Spracheinstellung, Theme, Währung, Auth-Token, Favoriten, Kategorie-Cache.

+

4.3 Diese Daten verlassen den Browser nicht.

+ +

5. Drittdienste

+

5.1 Directus (Backend): Selbst gehostet, keine Datenübertragung an Dritte.

+

5.2 BTCPay Server (Zahlungen): Keine personenbezogenen Daten übertragen.

+

5.3 CoinGecko API (Wechselkurse): Keine personenbezogenen Daten übertragen.

+ +

6. Verschlüsselung

+

6.1 Kommunikation ist Ende-zu-Ende verschlüsselt (NaCl/TweetNaCl).

+

6.2 Schlüssel werden im Browser generiert und gespeichert.

+

6.3 Server speichert nur verschlüsselten Ciphertext.

+ +

7. Datenweitergabe

+

7.1 Keine Weitergabe an Dritte zu Werbe- oder Marketingzwecken.

+

7.2 Herausgabe nur bei rechtlicher Verpflichtung durch Schweizer Behörden.

+ +

8. Rechte der Nutzer

+

8.1 Auskunft über gespeicherte Daten möglich.

+

8.2 Löschung durch Account-Löschung.

+

8.3 Datenportabilität auf Anfrage.

+ +

9. Aufbewahrungsdauer

+

Anzeigen: 30 Tage, Nachrichten: bis Löschung, Server-Logs: max. 7 Tage.

+ +

10. Anwendbares Recht

+

Schweizer Bundesgesetz über den Datenschutz (DSG).

+ +

11. Änderungen

+

Der Betreiber kann diese Datenschutzerklärung jederzeit anpassen.

+ + + `, + en: /* html */` +

Privacy Policy

+ + +

1. Controller

+

The controller for data processing is the operator of dgray.io, based in Switzerland.

+ +

2. Principle

+

The platform was designed following the principle of data minimization.

+ +

3. What data is collected?

+

3.1 Data we do NOT collect: No email addresses, no names, no phone numbers, no user location data, no payment data.

+

3.2 Registration: A cryptographic hash (SHA-256) of the UUID is stored as user identifier. The UUID itself is not stored.

+

3.3 Usage: Listings (title, description, price, category, location, images), Messages (end-to-end encrypted, only ciphertext stored), Favorites (stored locally in browser).

+

3.4 Technical data: Server logs may temporarily contain IP addresses and access times.

+ +

4. Cookies and local storage

+

4.1 No cookies for tracking or analytics.

+

4.2 localStorage: Language setting, theme, currency, auth token, favorites, category cache.

+

4.3 This data does not leave the browser.

+ +

5. Third-party services

+

5.1 Directus (Backend): Self-hosted, no data transfer to third parties.

+

5.2 BTCPay Server (Payments): No personal data transferred.

+

5.3 CoinGecko API (Exchange rates): No personal data transferred.

+ +

6. Encryption

+

6.1 Communication is end-to-end encrypted (NaCl/TweetNaCl).

+

6.2 Keys are generated and stored in the browser.

+

6.3 Server stores only encrypted ciphertext.

+ +

7. Data sharing

+

7.1 No data shared with third parties for advertising or marketing purposes.

+

7.2 Disclosure only when legally required by Swiss authorities.

+ +

8. User rights

+

8.1 Right to information about stored data.

+

8.2 Deletion by deleting the account.

+

8.3 Data portability upon request.

+ +

9. Retention period

+

Listings: 30 days, Messages: until deletion, Server logs: max. 7 days.

+ +

10. Governing law

+

Swiss Federal Act on Data Protection (FADP).

+ +

11. Changes

+

The operator may update this privacy policy at any time.

+ + + `, + fr: /* html */` +

Politique de confidentialité

+ + +

1. Responsable

+

Le responsable du traitement des données est l'exploitant de dgray.io, domicilié en Suisse.

+ +

2. Principe

+

La plateforme a été conçue selon le principe de minimisation des données.

+ +

3. Quelles données sont collectées ?

+

3.1 Données que nous ne collectons PAS : Aucune adresse e-mail, aucun nom, aucun numéro de téléphone, aucune donnée de localisation, aucune donnée de paiement.

+

3.2 Inscription : Un hash cryptographique (SHA-256) de l'UUID est stocké comme identifiant. L'UUID lui-même n'est pas stocké.

+

3.3 Utilisation : Annonces (titre, description, prix, catégorie, lieu, images), Messages (chiffrés de bout en bout, seul le texte chiffré est stocké), Favoris (stockés localement dans le navigateur).

+

3.4 Données techniques : Les journaux serveur peuvent temporairement contenir des adresses IP et des heures d'accès.

+ +

4. Cookies et stockage local

+

4.1 Aucun cookie de suivi ou d'analyse.

+

4.2 localStorage : Langue, thème, devise, jeton d'authentification, favoris, cache des catégories.

+

4.3 Ces données ne quittent pas le navigateur.

+ +

5. Services tiers

+

5.1 Directus (Backend) : Auto-hébergé, aucun transfert de données à des tiers.

+

5.2 BTCPay Server (Paiements) : Aucune donnée personnelle transférée.

+

5.3 CoinGecko API (Taux de change) : Aucune donnée personnelle transférée.

+ +

6. Chiffrement

+

6.1 La communication est chiffrée de bout en bout (NaCl/TweetNaCl).

+

6.2 Les clés sont générées et stockées dans le navigateur.

+

6.3 Le serveur ne stocke que du texte chiffré.

+ +

7. Partage de données

+

7.1 Aucune donnée partagée avec des tiers à des fins publicitaires ou marketing.

+

7.2 Divulgation uniquement sur obligation légale des autorités suisses.

+ +

8. Droits des utilisateurs

+

8.1 Droit d'accès aux données stockées.

+

8.2 Suppression par suppression du compte.

+

8.3 Portabilité des données sur demande.

+ +

9. Durée de conservation

+

Annonces : 30 jours, Messages : jusqu'à suppression, Journaux serveur : max. 7 jours.

+ +

10. Droit applicable

+

Loi fédérale suisse sur la protection des données (LPD).

+ +

11. Modifications

+

L'exploitant peut adapter cette politique de confidentialité à tout moment.

+ + + ` + } + return content[lang] || content.de + } + + render() { + const lang = getCurrentLanguage() + const backLabel = { de: 'Zurück zur Startseite', en: 'Back to Home', fr: 'Retour à l\'accueil' } + this.innerHTML = /* html */` + + ` + } +} + +customElements.define('page-privacy', PagePrivacy) + +const style = document.createElement('style') +style.textContent = /* css */` + page-privacy .legal-page { + padding: var(--space-lg) 0; + max-width: 800px; + margin: 0 auto; + } + + page-privacy .back-link { + display: inline-block; + color: var(--color-text-muted); + text-decoration: none; + font-size: var(--font-size-sm); + margin-bottom: var(--space-lg); + transition: color 0.2s; + } + + page-privacy .back-link:hover { + color: var(--color-text); + } + + page-privacy .legal-content h1 { + font-size: var(--font-size-2xl); + margin: 0 0 var(--space-xs); + } + + page-privacy .legal-content h2 { + font-size: var(--font-size-lg); + margin: var(--space-xl) 0 var(--space-sm); + padding-top: var(--space-md); + border-top: 1px solid var(--color-border); + } + + page-privacy .legal-content h2:first-of-type { + border-top: none; + } + + page-privacy .legal-content p { + line-height: 1.7; + margin: 0 0 var(--space-sm); + color: var(--color-text-secondary); + } + + page-privacy .legal-content ul { + margin: 0 0 var(--space-sm); + padding-left: var(--space-lg); + color: var(--color-text-secondary); + } + + page-privacy .legal-content ul li { + line-height: 1.7; + margin-bottom: var(--space-xs); + } + + page-privacy .legal-meta { + color: var(--color-text-muted); + font-size: var(--font-size-sm); + } + + @media (max-width: 768px) { + page-privacy .legal-page { + padding: var(--space-md) 0; + } + + page-privacy .legal-content h1 { + font-size: var(--font-size-xl); + } + + page-privacy .legal-content h2 { + font-size: var(--font-size-base); + } + } +` +document.head.appendChild(style) diff --git a/js/components/pages/page-terms.js b/js/components/pages/page-terms.js new file mode 100644 index 0000000..6e9bee3 --- /dev/null +++ b/js/components/pages/page-terms.js @@ -0,0 +1,332 @@ +import { getCurrentLanguage, i18n } from '../../i18n.js' + +class PageTerms extends HTMLElement { + connectedCallback() { + this.render() + this.unsubscribe = i18n.subscribe(() => this.render()) + } + + disconnectedCallback() { + if (this.unsubscribe) this.unsubscribe() + } + + render() { + const lang = getCurrentLanguage() + this.innerHTML = /* html */` + + ` + } + + getContent(lang) { + const content = { + de: this.getContentDE, + en: this.getContentEN, + fr: this.getContentFR + } + return (content[lang] || content.en).call(this) + } + + getContentDE() { + return /* html */` +

Allgemeine Geschäftsbedingungen (AGB)

+ + +

1. Geltungsbereich

+

1.1 Diese AGB regeln die Nutzung der Plattform dgray.io.

+

1.2 Die Plattform wird betrieben von einer natürlichen Person mit Sitz in der Schweiz.

+

1.3 Mit der Nutzung der Plattform erklärt sich die nutzende Person mit diesen AGB einverstanden.

+ +

2. Leistungen der Plattform

+

2.1 Die Plattform stellt einen Online-Marktplatz zur Verfügung, auf dem Nutzer/innen Anzeigen für Waren und Dienstleistungen veröffentlichen und untereinander kommunizieren können.

+

2.2 Die Plattform ist lediglich Vermittlerin und wird nicht Vertragspartei der zwischen den Nutzer/innen geschlossenen Verträge.

+

2.3 Der Betreiber übernimmt keine Gewähr für die Richtigkeit, Vollständigkeit oder Qualität der veröffentlichten Anzeigen.

+ +

3. Registrierung und Accounts

+

3.1 Die Nutzung erfordert keine Angabe persönlicher Daten. Die Registrierung erfolgt über eine anonyme UUID.

+

3.2 Die UUID ist der einzige Zugang zum Account. Es besteht keine Möglichkeit, eine verlorene UUID wiederherzustellen.

+

3.3 Pro Person darf nur ein aktiver Account geführt werden.

+ +

4. Anzeigen

+

4.1 Nutzer/innen können Anzeigen für legale Waren und Dienstleistungen veröffentlichen.

+

4.2 Der Betreiber behält sich vor, Anzeigen ohne Angabe von Gründen zu entfernen.

+

4.3 Anzeigen sind zeitlich begrenzt (30 Tage) und werden danach automatisch archiviert.

+ +

5. Gebühren und Zahlungen

+

5.1 Die Veröffentlichung einer Anzeige ist gebührenpflichtig. Die aktuelle Gebühr wird vor der Veröffentlichung angezeigt.

+

5.2 Die Bezahlung erfolgt ausschliesslich in Monero (XMR).

+

5.3 Bezahlte Gebühren werden nicht erstattet.

+

5.4 Transaktionen zwischen Nutzer/innen erfolgen direkt und ohne Beteiligung der Plattform.

+ +

6. Kommunikation

+

6.1 Die Plattform stellt einen Ende-zu-Ende verschlüsselten Chat zur Verfügung. Der Betreiber hat keinen Zugang zu den Nachrichteninhalten.

+

6.2 Die Nutzer/innen sind für den Inhalt ihrer Nachrichten selbst verantwortlich.

+ +

7. Haftung

+

7.1 Der Betreiber haftet nicht für:

+ +

7.2 Die Haftung ist auf die bezahlten Gebühren beschränkt.

+

7.3 Der Betreiber haftet nicht für indirekte Schäden oder entgangenen Gewinn.

+ +

8. Datenschutz

+

8.1 Die Plattform erhebt so wenig personenbezogene Daten wie technisch möglich.

+

8.2 Keine E-Mail-Adressen, Namen oder Standortdaten werden gespeichert.

+

8.3 Nachrichten sind Ende-zu-Ende verschlüsselt.

+

8.4 Es werden keine Analyse- oder Tracking-Dienste eingesetzt.

+

8.5 Weitere Details in der Datenschutzerklärung.

+ +

9. Sperrung und Kündigung

+

9.1 Die Nutzer/in kann ihren Account jederzeit durch Löschen der UUID beenden.

+

9.2 Der Betreiber kann Accounts bei Verstössen sperren.

+

9.3 Kein Anspruch auf Rückerstattung bei Sperrung.

+ +

10. Änderungen der AGB

+

10.1 Der Betreiber kann diese AGB jederzeit ändern.

+

10.2 Durch weitere Nutzung akzeptiert die Nutzer/in die neuen AGB.

+ +

11. Anwendbares Recht und Gerichtsstand

+

11.1 Es gilt Schweizer Recht.

+

11.2 Gerichtsstand ist der Sitz des Betreibers in der Schweiz.

+ +

12. Salvatorische Klausel

+

Sollten einzelne Bestimmungen unwirksam sein, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt.

+ + + ` + } + + getContentEN() { + return /* html */` +

Terms of Service

+ + +

1. Scope

+

1.1 These Terms of Service govern the use of the platform dgray.io.

+

1.2 The platform is operated by a natural person based in Switzerland.

+

1.3 By using the platform, the user agrees to these terms.

+ +

2. Services

+

2.1 The platform provides an online marketplace where users can publish listings for goods and services and communicate with each other.

+

2.2 The platform acts solely as an intermediary and does not become a party to contracts between users.

+

2.3 The operator does not guarantee the accuracy, completeness, or quality of published listings.

+ +

3. Registration and Accounts

+

3.1 No personal data is required. Registration is done via an anonymous UUID.

+

3.2 The UUID is the sole access to the account. Lost UUIDs cannot be recovered.

+

3.3 Only one active account per person is permitted.

+ +

4. Listings

+

4.1 Users may publish listings for legal goods and services.

+

4.2 The operator reserves the right to remove listings without stating reasons.

+

4.3 Listings are limited to 30 days and are automatically archived thereafter.

+ +

5. Fees and Payments

+

5.1 Publishing a listing requires a fee. The current fee is displayed before publication.

+

5.2 Payment is made exclusively in Monero (XMR).

+

5.3 Paid fees are non-refundable.

+

5.4 Transactions between users are direct and without platform involvement.

+ +

6. Communication

+

6.1 The platform provides end-to-end encrypted chat. The operator has no access to message content.

+

6.2 Users are responsible for the content of their messages.

+ +

7. Liability

+

7.1 The operator is not liable for:

+ +

7.2 Liability is limited to fees paid.

+

7.3 The operator is not liable for indirect damages or lost profits.

+ +

8. Data Protection

+

8.1 The platform collects as little personal data as technically possible.

+

8.2 No email addresses, names, or location data are stored.

+

8.3 Messages are end-to-end encrypted.

+

8.4 No analytics or tracking services are used.

+

8.5 See the Privacy Policy for details.

+ +

9. Suspension and Termination

+

9.1 Users can terminate their account at any time by deleting their UUID.

+

9.2 The operator may suspend accounts for violations.

+

9.3 No refund claim exists in case of suspension.

+ +

10. Changes to Terms

+

10.1 The operator may change these terms at any time.

+

10.2 Continued use constitutes acceptance of the updated terms.

+ +

11. Governing Law and Jurisdiction

+

11.1 Swiss law applies.

+

11.2 Place of jurisdiction is the operator's domicile in Switzerland.

+ +

12. Severability

+

If any provision is found invalid, the remaining provisions remain in effect.

+ + + ` + } + + getContentFR() { + return /* html */` +

Conditions Générales d'Utilisation (CGU)

+ + +

1. Champ d'application

+

1.1 Les présentes CGU régissent l'utilisation de la plateforme dgray.io.

+

1.2 La plateforme est exploitée par une personne physique domiciliée en Suisse.

+

1.3 En utilisant la plateforme, l'utilisateur accepte les présentes CGU.

+ +

2. Services

+

2.1 La plateforme met à disposition un marché en ligne où les utilisateurs peuvent publier des annonces et communiquer entre eux.

+

2.2 La plateforme agit uniquement en tant qu'intermédiaire et ne devient pas partie aux contrats entre utilisateurs.

+

2.3 L'exploitant ne garantit pas l'exactitude, l'exhaustivité ou la qualité des annonces publiées.

+ +

3. Inscription et comptes

+

3.1 Aucune donnée personnelle n'est requise. L'inscription se fait via un UUID anonyme.

+

3.2 L'UUID est le seul accès au compte. Les UUID perdus ne peuvent pas être récupérés.

+

3.3 Un seul compte actif par personne est autorisé.

+ +

4. Annonces

+

4.1 Les utilisateurs peuvent publier des annonces pour des biens et services légaux.

+

4.2 L'exploitant se réserve le droit de supprimer des annonces sans justification.

+

4.3 Les annonces sont limitées à 30 jours et sont automatiquement archivées.

+ +

5. Frais et paiements

+

5.1 La publication d'une annonce est payante. Les frais sont affichés avant la publication.

+

5.2 Le paiement s'effectue exclusivement en Monero (XMR).

+

5.3 Les frais payés ne sont pas remboursables.

+

5.4 Les transactions entre utilisateurs sont directes et sans intervention de la plateforme.

+ +

6. Communication

+

6.1 La plateforme fournit un chat chiffré de bout en bout. L'exploitant n'a pas accès au contenu des messages.

+

6.2 Les utilisateurs sont responsables du contenu de leurs messages.

+ +

7. Responsabilité

+

7.1 L'exploitant n'est pas responsable :

+ +

7.2 La responsabilité est limitée aux frais payés.

+

7.3 L'exploitant n'est pas responsable des dommages indirects ou des pertes de bénéfices.

+ +

8. Protection des données

+

8.1 La plateforme collecte le minimum de données personnelles techniquement nécessaire.

+

8.2 Aucune adresse e-mail, nom ou donnée de localisation n'est stocké.

+

8.3 Les messages sont chiffrés de bout en bout.

+

8.4 Aucun service d'analyse ou de suivi n'est utilisé.

+

8.5 Voir la politique de confidentialité pour plus de détails.

+ +

9. Suspension et résiliation

+

9.1 Les utilisateurs peuvent résilier leur compte à tout moment en supprimant leur UUID.

+

9.2 L'exploitant peut suspendre les comptes en cas de violation.

+

9.3 Aucun remboursement en cas de suspension.

+ +

10. Modifications des CGU

+

10.1 L'exploitant peut modifier les présentes CGU à tout moment.

+

10.2 L'utilisation continue vaut acceptation des CGU modifiées.

+ +

11. Droit applicable et for juridique

+

11.1 Le droit suisse est applicable.

+

11.2 Le for juridique est le domicile de l'exploitant en Suisse.

+ +

12. Clause de sauvegarde

+

Si une disposition est jugée invalide, les autres dispositions restent en vigueur.

+ + + ` + } +} + +customElements.define('page-terms', PageTerms) + +const style = document.createElement('style') +style.textContent = /* css */` + page-terms .legal-page { + padding: var(--space-lg) 0; + max-width: 800px; + margin: 0 auto; + } + + page-terms .back-link { + display: inline-block; + color: var(--color-text-muted); + text-decoration: none; + font-size: var(--font-size-sm); + margin-bottom: var(--space-lg); + transition: color 0.2s; + } + + page-terms .back-link:hover { + color: var(--color-text); + } + + page-terms .legal-content h1 { + font-size: var(--font-size-2xl); + margin: 0 0 var(--space-xs); + } + + page-terms .legal-content h2 { + font-size: var(--font-size-lg); + margin: var(--space-xl) 0 var(--space-sm); + padding-top: var(--space-md); + border-top: 1px solid var(--color-border); + } + + page-terms .legal-content h2:first-of-type { + border-top: none; + } + + page-terms .legal-content p { + line-height: 1.7; + margin: 0 0 var(--space-sm); + color: var(--color-text-secondary); + } + + page-terms .legal-content ul { + margin: 0 0 var(--space-sm); + padding-left: var(--space-lg); + color: var(--color-text-secondary); + } + + page-terms .legal-content ul li { + line-height: 1.7; + margin-bottom: var(--space-xs); + } + + page-terms .legal-meta { + color: var(--color-text-muted); + font-size: var(--font-size-sm); + } + + @media (max-width: 768px) { + page-terms .legal-page { + padding: var(--space-md) 0; + } + + page-terms .legal-content h1 { + font-size: var(--font-size-xl); + } + + page-terms .legal-content h2 { + font-size: var(--font-size-base); + } + } +` +document.head.appendChild(style)