Files
kashilo/README.md

226 lines
6.1 KiB
Markdown

# dgray.io
Eine anonyme, dezentrale Kleinanzeigen-Plattform mit Monero-Bezahlung.
## 🎯 Vision
dgray.io ermöglicht es Nutzern, Kleinanzeigen zu schalten und Waren/Dienstleistungen sicher über Monero (XMR) zu handeln. Besonderheiten:
- **Anonymität**: Nutzung ohne Account möglich
- **Käuferschutz**: Monero MultiSig Escrow
- **Dezentral**: Keine zentrale Zahlungsabwicklung
- **Privacy-First**: E2E-Verschlüsselung für Kommunikation
---
## 📊 Machbarkeitsanalyse
### Technisch realisierbar
| Feature | Komplexität | Status |
|---------|-------------|--------|
| Anzeigen CRUD | Niedrig | ✅ Fertig |
| Fiat/XMR Preisanzeige | Niedrig | ✅ Fertig |
| Anonyme Nutzung (UUID + Hash) | Mittel | ✅ Fertig |
| PWA | Mittel | ✅ Grundgerüst |
| Light/Dark Mode | Niedrig | ✅ Fertig |
| i18n (DE/EN/FR) | Niedrig | ✅ Fertig |
| Bildergalerie | Niedrig | ✅ Fertig |
| E2E-Chat | Hoch | 🔲 Vorbereitet |
| **Monero MultiSig** | **Sehr hoch** | 🔲 Offen |
| Rating-System | Mittel | 🔲 Offen |
| 2FA | Mittel | 🔲 Offen |
### ⚠️ Kritische Punkte
1. **Monero MultiSig Escrow**
- Komplexeste Komponente
- Erfordert eigene Wallet-Integration via `monero-wallet-rpc`
- Nutzer müssen Wallet-Keys verwalten → UX-Hürde
- Alternative für MVP: Trusted Escrow-Service
2. **Rechtliche Aspekte**
- AGB, Datenschutz, Impressum erforderlich
- Geldwäsche-Regularien (je nach Jurisdiktion)
- Haftung bei Betrug klären
3. **E2E-Verschlüsselung**
- Key-Management für anonyme Nutzer
- Optionen: Signal-Protokoll, Matrix-Protokoll
---
## 🛠️ Tech-Stack
### Frontend (aktuell)
- **Vanilla JavaScript** (ES Modules)
- **Web Components** (Custom Elements)
- **CSS Custom Properties** (Theming)
- **PWA** (Service Worker, Manifest)
### Backend (geplant)
- **Directus** (Headless CMS)
- REST/GraphQL API
- Auth, Rollen, Berechtigungen
- Custom Extensions für XMR-Integration
### Infrastruktur (geplant)
- PostgreSQL + Redis
- monero-wallet-rpc
- Matrix/Signal für Chat
---
## 🚀 Setup
### Voraussetzungen
- Moderner Browser mit ES Module Support
- Python 3 (für lokalen Server) oder beliebiger HTTP-Server
### Installation
```bash
# Repository klonen
git clone https://gitea.pro/schmidt1024/dgray.git
cd dgray
# Lokalen Server starten
python3 -m http.server 8080
# Oder mit Live-Reload (Node.js erforderlich)
npx live-server
```
Öffne http://localhost:8080
### Projektstruktur
```
dgray/
├── index.html # Entry Point
├── manifest.json # PWA Manifest
├── service-worker.js # Offline-Support
├── css/
│ ├── fonts.css # Web Fonts (Inter, Space Grotesk)
│ ├── variables.css # Theming (Light/Dark)
│ ├── base.css # Reset, Grundstyles
│ └── components.css # UI-Komponenten
├── js/
│ ├── app.js # App-Initialisierung
│ ├── router.js # Hash-basiertes Routing
│ ├── i18n.js # Übersetzungssystem
│ ├── services/
│ │ ├── directus.js # Directus API Client
│ │ ├── auth.js # UUID-Auth (SHA-256 Hash)
│ │ ├── listings.js # Listings-Service
│ │ ├── categories.js # Kategorien-Service
│ │ ├── locations.js # Standorte-Service
│ │ ├── conversations.js# Zero-Knowledge Chat
│ │ ├── crypto.js # NaCl Encryption
│ │ └── currency.js # XMR/Fiat Umrechnung
│ └── components/
│ ├── app-shell.js # Layout-Container
│ ├── app-header.js # Header mit Navigation
│ ├── app-footer.js # Footer
│ ├── auth-modal.js # Login/Register Modal
│ ├── chat-widget.js # E2E Chat Widget
│ └── pages/ # Seiten-Komponenten
├── locales/
│ ├── de.json # Deutsch
│ ├── en.json # English
│ └── fr.json # Français
└── assets/
└── fonts/ # Self-hosted Fonts
```
---
## 📋 Offene Punkte / Roadmap
### Phase 1: MVP Frontend
- [x] Projektstruktur
- [x] Routing
- [x] i18n (DE/EN/FR)
- [x] Light/Dark Mode
- [x] PWA Grundgerüst
- [x] Startseite mit Suche, Kategorien, Listings-Grid
- [x] Typografie (Inter + Space Grotesk)
- [x] Such-Komponente mit Accordion-Kategorien
- [x] Anzeige-Detailseite mit Bildergalerie
- [x] Anzeige-Erstellen-Formular
- [ ] Suchseite mit Filtern
- [ ] Responsive Optimierungen
### Phase 2: Backend-Integration ⬅️ **Aktuell**
- [x] Directus aufsetzen (`api.dgray.io`)
- [x] Listings-Collection (CRUD)
- [x] Categories mit Übersetzungen
- [x] User-Auth (UUID + SHA-256 Hash, anonym)
- [x] Bilder-Upload (Junction-Table)
- [x] API-Services (`directus.js`, `listings.js`, `categories.js`, `locations.js`)
- [ ] Directus Public-Berechtigungen vervollständigen
### Phase 3: Kommunikation
- [ ] Chat-System (E2E-verschlüsselt)
- [ ] Benachrichtigungen
- [ ] Merkliste
### Phase 4: Payments
- [ ] XMR-Kursabfrage API
- [ ] Fiat ↔ XMR Umrechnung
- [ ] Wallet-Anbindung (monero-wallet-rpc)
- [ ] MultiSig Escrow
### Phase 5: Trust & Safety
- [ ] Rating-System
- [ ] 2FA
- [ ] Reporting/Moderation
- [ ] AGB, Datenschutz
---
## 🎨 Design-Entscheidungen
### Typografie
- **Headlines**: Space Grotesk (Medium, Bold)
- **Body**: Inter (Regular, Medium, SemiBold, Bold)
- Self-hosted Fonts (SIL Open Font License)
### Farbpalette
- **Light Mode**: Lavender-Töne (#FAF8FC, #6B5B95)
- **Dark Mode**: Deep Purple (#1A1424, #B8A5D6)
- WCAG AAA konform (Kontrast > 7:1)
### Mobile-First
- Responsive Grid (2 Spalten Mobile, 5 Spalten Desktop)
- Touch-optimierte Buttons
- Icon-only Buttons auf kleinen Screens
---
## 🤝 Contributing
1. Feature-Branch erstellen
2. Änderungen committen
3. Pull Request öffnen
### Code-Konventionen
- ES Modules verwenden
- Web Components für UI-Komponenten
- CSS Custom Properties für Theming
- Übersetzungsschlüssel für alle Texte
- Keine Semikolons in JavaScript (außer for-loops, CSS)
- Englische Kommentare im Code
---
## 📄 Lizenz
TBD
---
## 📞 Kontakt
TBD