Files
vendoo/CLAUDE.md
Masterluke77andGitHub 6f48827f4d Vendoo 1.41.2 – Git Ignore Boundary & Module Tracking Hotfix (#18)
* docs: prepare Vendoo 1.41.2 git-ignore boundary hotfix

* fix: track native source modules with root-anchored runtime ignores
2026-07-09 17:09:00 +02:00

4.9 KiB

Vendoo — Projekt-Kontext

Du arbeitest am Projekt "Vendoo" — ein lokaler Multi-Plattform Listing-Generator mit AI, Lagerverwaltung und Publishing-System.

Lies zuerst FEATURES.md im Projektroot — das ist die vollstaendige Feature-Dokumentation mit Tech Stack, Projektstruktur, DB-Schema, allen 80+ API-Endpunkten und 17 Feature-Beschreibungen.

Tech Stack

  • Backend: Node.js + Express (ESM, "type": "module")
  • Frontend: Vanilla HTML/CSS/JS — kein Framework, kein Build-Step, kein TypeScript
  • Datenbank: SQLite via better-sqlite3 (WAL-Modus)
  • AI: Anthropic Claude, OpenAI, OpenRouter, Ollama (lokal)
  • Bilder: sharp (Resize, BG-Remove, Watermark)
  • Rich-Text: Quill Editor
  • E-Mail: Nodemailer (SMTP)
  • Extension: Chrome Manifest v3

Dateistruktur (wo was hingehoert)

Aenderung Datei(en)
Neue API-Route server.mjs — Route hinzufuegen + Import erweitern
Neue DB-Funktion lib/db.mjs — Funktion exportieren
Neue DB-Spalte lib/db.mjs — MIGRATIONS-Array erweitern (try/catch ALTER TABLE Pattern)
Neues UI-Tab public/index.html (Sidebar-Button + Section), public/app.js (TAB_TITLES + switchToTab + Logik), public/style.css
Neuer AI-Provider lib/ai-*.mjs + lib/ai-router.mjs erweitern
Neue Plattform platforms/*.mjs + lib/categories.mjs + lib/fees.mjs + lib/html-templates.mjs
Styling public/style.css — CSS Custom Properties fuer Theming

Konventionen

  • Sprache: UI ist komplett Deutsch
  • SKU-Format: VD-XXXX (auto-generiert, 4-stellig aufsteigend)
  • Navigation: Sidebar mit data-tab Attributen, Tab-Inhalte als <section id="..." class="tab-content">
  • Topbar-Titel: TAB_TITLES Map in app.js muss fuer neue Tabs erweitert werden
  • Dark Mode: CSS-Variablen unter [data-theme="dark"], niemals hardcoded Farben
  • Auth: Session-basiert, Rollen admin/editor, CSRF-Token bei state-changing Requests
  • DB-Migrationen: Neue Spalten als Eintrag in MIGRATIONS-Array (Zeile ~17-21 in db.mjs):
    const MIGRATIONS = [
      ['spaltenname', 'TEXT'],  // oder 'REAL', "TEXT DEFAULT 'wert'"
    ];
    // Wird automatisch per try/catch ALTER TABLE ausgefuehrt
    
  • API-Pattern: REST, JSON-Body, Fehler als { error: 'message' }
  • Frontend-API-Aufrufe: api(method, path, body) Helper in app.js (fuegt Auth + CSRF automatisch hinzu)
  • Toast-Benachrichtigungen: toast('Nachricht') in app.js
  • Quill-Editor: initQuill(selector, placeholder) — gibt Editor-Instanz zurueck

Server starten

npm install          # Dependencies installieren
npm run dev          # Dev-Server mit --watch (Port 8124)
npm start            # Produktiv-Server

Oder: setup.bat fuer gefuehrte Installation.

Wichtige Dateien nach Groesse

Datei Zeilen Inhalt
public/app.js ~3240 Gesamte Frontend-Logik
server.mjs ~1250 Alle API-Routen + Middleware
public/style.css ~1200 Komplettes Styling + Dark Mode + Responsive
public/index.html ~845 HTML-Struktur (Sidebar, Tabs, Modals, Forms)
lib/db.mjs ~390 Datenbank-Zugriff (alle CRUD-Funktionen)
lib/categories.mjs ~360 Kategorie-Baeume pro Plattform
lib/auth.mjs ~290 Auth-System (Users, Sessions, Audit)
lib/ebay-api.mjs ~270 eBay REST API + OAuth2
lib/mailer.mjs ~210 SMTP E-Mail-Versand
lib/etsy-api.mjs ~185 Etsy REST API v3 + OAuth2 PKCE
extension/content.js ~1170 Chrome Extension Content Script

Aktueller UI-Stand

  • Version 1.3.0
  • UI 2026 Slice 05: Publish-Center
  • Smart Copy, direkte Veröffentlichung, eBay Queue und Scheduling arbeiten in einer gemeinsamen Oberfläche.
  • Interne Publish-Arbeitsschritte dürfen keine separaten Browserfenster oder redundanten Modale öffnen.

Bildarchitektur ab 1.23.0

  • FLUX/ComfyUI ist der einzige lokale generative Bilddienst.

  • Das FLUX Studio arbeitet textbasiert und getrennt von Produktbild-Werkzeugen.

  • Keine VTO-, Python-, Torch- oder ONNX-Laufzeit wieder einführen, solange kein neuer ausdrücklicher Architekturentscheid dokumentiert ist.

  • FLUX-Studio-Aufträge und Varianten sind in flux_prompt_jobs und flux_prompt_job_variants persistent.

  • Fortschritt im FLUX Studio wird als reale Phase dargestellt; keine aus Laufzeit geschätzten Prozentwerte ergänzen.

  • ComfyUI-Prompt-IDs müssen für Abbruch, Historie und Neustart-Wiederaufnahme erhalten bleiben.

  • Der Advanced Image Editor arbeitet nicht destruktiv: Originaldateien niemals überschreiben oder löschen.

  • Jede gespeicherte Bearbeitung muss eine neue Datei und einen Eintrag in image_edit_versions erzeugen.

  • Bildpfade müssen strikt auf uploads/ begrenzt und gegen Traversal geschützt bleiben.

  • Hintergrundentfernung, Inpainting, Outpainting und Maskeneditor nicht als Platzhalter ergänzen; diese Funktionen benötigen eigene spätere Slices.