From 515e43541becdb7d931de2f0d8237a15f61672df Mon Sep 17 00:00:00 2001 From: Alexander Schmidt Date: Sat, 31 Jan 2026 17:39:42 +0100 Subject: [PATCH] update AGENTS, README; cleanup page create --- AGENTS.md | 29 ++++++++++++++++++---- README.md | 39 ++++++++++++++++++------------ js/components/pages/page-create.js | 2 -- 3 files changed, 48 insertions(+), 22 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4859670..5ef788c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -41,14 +41,21 @@ js/ ├── router.js # Hash-Router mit :params ├── i18n.js # t('key'), subscribe(), updateDOM() ├── services/ -│ ├── directus.js # Directus API Client -│ ├── auth.js # UUID-basierte Authentifizierung +│ ├── directus.js # Directus API Client (Core) +│ ├── auth.js # UUID-basierte Authentifizierung (SHA-256 Hash) +│ ├── listings.js # Listings Service (Filter, Preis-Formatierung) +│ ├── categories.js # Kategorien Service (Baum, Übersetzungen) +│ ├── locations.js # Standorte Service (Geo-Suche) +│ ├── conversations.js # Zero-Knowledge Chat (E2E verschlüsselt) +│ ├── chat.js # LocalStorage Chat (Legacy/Mock) +│ ├── crypto.js # NaCl Encryption │ └── currency.js # XMR/Fiat Umrechnung └── components/ ├── app-shell.js # Layout, registriert Routes ├── app-header.js # Header (Theme-Toggle, Lang-Dropdown) ├── app-footer.js # Footer ├── auth-modal.js # Login/Register Modal + ├── chat-widget.js # E2E Chat Widget └── pages/ # Seiten als Web Components css/ @@ -101,9 +108,21 @@ locales/ ## Nächste Schritte 1. Suchseite (`page-search.js`) mit Filtern ausbauen -2. Anzeige-Detailseite (`page-listing.js`) gestalten -3. Anzeige-Erstellen-Formular (`page-create.js`) fertigstellen -4. Profil-Seite (`page-profile.js`) erstellen +2. Profil-Seite (`page-profile.js`) erstellen - Meine Anzeigen, Favoriten +3. Directus Berechtigungen für Public-Rolle vervollständigen +4. Location-Picker für Anzeigen-Erstellung + +## Directus Berechtigungen (Public-Rolle) + +| Collection | Read | Create | Hinweise | +|------------|------|--------|----------| +| `listings` | ✓ | ✓ | Nur `status=published` lesen | +| `listings_files` | ✓ | ✓ | Junction-Table für Bilder | +| `directus_files` | ✓ | ✓ | Für Assets/Bilder | +| `categories` | ✓ | - | Nur `status=published` | +| `categories_translations` | ✓ | - | Für i18n | +| `locations` | ✓ | - | Für Standort-Auswahl | +| `languages` | ✓ | - | Für Sprachen-Liste | ## Farbpalette diff --git a/README.md b/README.md index c365c44..4df68c0 100644 --- a/README.md +++ b/README.md @@ -19,18 +19,17 @@ dgray.io ermöglicht es Nutzern, Kleinanzeigen zu schalten und Waren/Dienstleist | Feature | Komplexität | Status | |---------|-------------|--------| -| Anzeigen CRUD | Niedrig | 🔲 Offen | -| Fiat/XMR Preisanzeige | Niedrig | 🔲 Offen | -| Anonyme Nutzung | Mittel | 🔲 Offen | +| 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 | -| E2E-Chat | Hoch | 🔲 Offen | +| Bildergalerie | Niedrig | ✅ Fertig | +| E2E-Chat | Hoch | 🔲 Vorbereitet | | **Monero MultiSig** | **Sehr hoch** | 🔲 Offen | -| KI-Assistenz | Mittel | 🔲 Offen | | Rating-System | Mittel | 🔲 Offen | | 2FA | Mittel | 🔲 Offen | -| Forum/Gruppen | Hoch | 🔲 Offen | ### ⚠️ Kritische Punkte @@ -111,19 +110,27 @@ dgray/ │ ├── router.js # Hash-basiertes Routing │ ├── i18n.js # Übersetzungssystem │ ├── services/ -│ │ └── api.js # API-Client (Vorbereitung) +│ │ ├── 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 (Inter, Space Grotesk) - └── icons/ # App-Icons + └── fonts/ # Self-hosted Fonts ``` --- @@ -139,17 +146,19 @@ dgray/ - [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 -- [ ] Anzeige-Detailseite -- [ ] Anzeige-Erstellen-Formular - [ ] Responsive Optimierungen ### Phase 2: Backend-Integration ⬅️ **Aktuell** - [x] Directus aufsetzen (`api.dgray.io`) -- [ ] Anzeigen-Collection -- [x] User-Auth (UUID-basiert, anonym) -- [ ] Bilder-Upload -- [x] API-Anbindung im Frontend (`js/services/directus.js`) +- [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) diff --git a/js/components/pages/page-create.js b/js/components/pages/page-create.js index 81ab82f..2b3e072 100644 --- a/js/components/pages/page-create.js +++ b/js/components/pages/page-create.js @@ -426,9 +426,7 @@ class PageCreate extends HTMLElement { } } - console.log('Creating listing:', listingData) const listing = await directus.createListing(listingData) - console.log('Created listing:', listing) this.clearDraft()