From ba69bc5e12451dde6a267ab26a1902bc82708bb6 Mon Sep 17 00:00:00 2001 From: Masterluke77 <163446896+Masterluke77@users.noreply.github.com> Date: Tue, 7 Jul 2026 09:42:00 +0200 Subject: [PATCH] docs: add Vendoo feature baseline --- FEATURES.md | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 FEATURES.md diff --git a/FEATURES.md b/FEATURES.md new file mode 100644 index 0000000..017e8b0 --- /dev/null +++ b/FEATURES.md @@ -0,0 +1,101 @@ +# Vendoo – Feature-Dokumentation + +> Lokaler Multi-Plattform Listing-Generator mit AI, Lagerverwaltung und Publishing-System. +> Stand: 2026-07-07 | Version 1.0.0 + +## Verbindlicher Tech Stack + +- Backend: Node.js + Express als ESM +- Frontend: Vanilla HTML/CSS/JavaScript ohne Framework und ohne Build-Schritt +- Datenbank: SQLite über `better-sqlite3` im WAL-Modus +- AI: Anthropic Claude, OpenAI, OpenRouter und Ollama +- Bildverarbeitung: `sharp` +- Rich Text: Quill +- QR-Codes: QRious +- E-Mail: Nodemailer +- Auth: Scrypt, Sessions, Magic Links, Rollen `admin` und `editor`, CSRF +- Browser-Erweiterung: Chrome Manifest v3 + +## Verbindliche Projektstruktur + +- `server.mjs`: Express-Server und API-Routen +- `lib/db.mjs`: Datenbankzugriff und `MIGRATIONS`-Array +- `lib/*.mjs`: Auth, AI, Bilder, Gebühren, Kategorien, Mailer und Plattform-APIs +- `platforms/*.mjs`: plattformspezifische Prompt- und Parsing-Logik +- `public/index.html`: Single-Page-Oberfläche +- `public/app.js`: gesamte Frontend-Logik +- `public/style.css`: Styling und Dark Mode +- `extension/`: Chrome-Erweiterung +- `db/schema.sql`: Datenbankschema +- `uploads/`: lokale Produktfotos, nicht versioniert + +## Entwicklungsregeln + +1. Neue DB-Spalten werden als neue Migration im `MIGRATIONS`-Array von `lib/db.mjs` ergänzt. +2. Migrationen verwenden das bestehende `try/catch ALTER TABLE`-Muster. +3. Neue DB-Funktionen werden aus `lib/db.mjs` exportiert und in `server.mjs` importiert. +4. Neue API-Routen werden in `server.mjs` angelegt. +5. Sidebar-Navigation verwendet `data-tab`. +6. Tab-Inhalte sind `
`. +7. Topbar-Titel werden über die `TAB_TITLES`-Map gesteuert. +8. Dark Mode verwendet ausschließlich CSS Custom Properties unter `[data-theme="dark"]`. +9. Die UI ist deutschsprachig. +10. SKUs werden im Format `VD-XXXX` erzeugt. +11. Schreibende Requests benötigen Session, Rollenprüfung und CSRF-Token. + +## Funktionsbereiche + +1. AI-Listing-Generator +2. Foto-Management und Bildeditor +3. Listing-Verwaltung und Historie +4. Vorlagen-System +5. Publishing-System einschließlich Smart Copy, Etsy, eBay und Warteschlange +6. Lagerverwaltung +7. SKU-System +8. Gebührenrechner +9. Kategorie-System +10. Etiketten- und Datenblattdruck +11. Authentifizierung und Benutzerverwaltung +12. SMTP und E-Mail +13. Systeminformationen, Backup und Restore +14. Chrome-Erweiterung für Vinted +15. Einstellungen und Provider-Konfiguration +16. Responsive UI, Dark Mode, Toasts und Quill +17. Windows-Installer mit Install, Start, Update, Repair, Uninstall und Status + +## Datenbereiche + +Zentrale Tabellen: + +- `listings` +- `templates` +- `publish_log` +- `ebay_queue` +- `scheduled_publish` +- `settings` +- `users` +- `sessions` +- `auth_tokens` +- `rate_limits` +- `audit_log` +- `login_history` + +## Online- und Docker-Zielbild + +Vendoo soll zusätzlich zur lokalen Windows-Installation später als Docker-Anwendung betrieben werden können. Für öffentliche Nutzer ist ein von privaten NAS-Daten getrennter Server/VPS vorgesehen. Der NAS-Betrieb ist nur für private Nutzung oder einen streng geschlossenen Testkreis vorgesehen. + +Zwingende Grundlagen: + +- konfigurierbare Pfade für Datenbank, Uploads und Backups +- `PUBLIC_BASE_URL` +- Reverse-Proxy-Unterstützung und begrenztes `trust proxy` +- HTTPS und sichere Cookies +- Health- und Readiness-Endpunkte +- Secrets-Unterstützung +- nicht privilegierter Container +- konsistente SQLite-Backups +- gehärtete Upload-Verarbeitung +- dynamische OAuth-Callbacks +- spätere Organisations- und Mandantentrennung vor öffentlichem Mehrkundenbetrieb + +Die ausführliche ursprüngliche Feature-Dokumentation bleibt die fachliche Referenz und soll zusammen mit dem lokalen Quellprojekt vollständig importiert werden.