# πŸ“š Reading Activity zu n8n hinzufΓΌgen ## βœ… Was du bereits hast: - βœ… Frontend ist bereit (ActivityFeed.tsx updated) - βœ… TypeScript Interfaces erweitert - βœ… Grid Layout (horizontal auf Desktop, vertikal auf Mobile) - βœ… Conditional Rendering (nur zeigen wenn `isReading: true`) ## πŸ”§ n8n Workflow anpassen ### Option 1: Hardcover Integration (automatisch) **1. Neuer Node in n8n: "Hardcover"** ``` Type: HTTP Request Method: GET URL: https://cms.dk0.dev/api/n8n/hardcover/currently-reading ``` **2. Mit Webhook verbinden** ``` Webhook β†’ Hardcover (parallel zu Spotify/Lanyard) ↓ Merge (Node mit 5 Inputs statt 4) ↓ Code in JavaScript ``` **3. Code Node updaten** Ersetze den gesamten Code in deinem "Code in JavaScript" Node mit dem Code aus: `scripts/n8n-workflow-code-updated.js` --- ### Option 2: Manueller Webhook (fΓΌr Tests) **Neuer Workflow: "Set Reading Status"** **Node 1: Webhook (POST)** ``` Path: /set-reading Method: POST ``` **Node 2: PostgreSQL/Set Variable** ```javascript // Speichere reading Status in einer Variablen // Oder direkt in Database wenn du willst const { title, author, progress, coverUrl, isReading } = items[0].json.body; return [{ json: { reading: { isReading: isReading !== false, // default true title, author, progress, coverUrl } } }]; ``` **Usage:** ```bash curl -X POST https://your-n8n.com/webhook/set-reading \ -H "Content-Type: application/json" \ -d '{ "isReading": true, "title": "Clean Architecture", "author": "Robert C. Martin", "progress": 65, "coverUrl": "https://example.com/cover.jpg" }' # Clear reading: curl -X POST https://your-n8n.com/webhook/set-reading \ -d '{"isReading": false}' ``` --- ## 🎨 Wie es aussieht ### Desktop (breiter Bildschirm): ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Coding β”‚ Gaming β”‚ Music β”‚ Reading β”‚ β”‚ (RIGHT β”‚ (RIGHT β”‚ β”‚ β”‚ β”‚ NOW) β”‚ NOW) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Tablet: ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Coding β”‚ Gaming β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Music β”‚ Reading β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Mobile: ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Coding β”‚ β”‚ (RIGHT β”‚ β”‚ NOW) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Gaming β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Music β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Reading β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸ”₯ Features βœ… **Nur zeigen wenn aktiv** - Wenn `isReading: false`, verschwindet die Card komplett βœ… **Progress Bar** - Visueller Fortschritt mit Animation βœ… **Book Cover** - Kleines Cover (40x56px) βœ… **Responsive Grid** - 1 Spalte (Mobile), 2 Spalten (Tablet), 3 Spalten (Desktop) βœ… **Smooth Animations** - Fade in/out mit Framer Motion βœ… **Amber Theme** - Passt zu "Reading" πŸ“– --- ## πŸš€ Testing **1. Hardcover Endpoint testen:** ```bash curl https://cms.dk0.dev/api/n8n/hardcover/currently-reading ``` **2. n8n Webhook testen:** ```bash curl https://your-n8n.com/webhook/denshooter-71242/status ``` **3. Frontend testen:** ```bash # Dev Server starten npm run dev # In Browser Console: fetch('/api/n8n/status').then(r => r.json()).then(console.log) ``` --- ## πŸ“ NΓ€chste Schritte 1. βœ… Frontend Code ist bereits angepasst 2. ⏳ n8n Workflow Code updaten (siehe `scripts/n8n-workflow-code-updated.js`) 3. ⏳ Optional: Hardcover Node hinzufΓΌgen 4. ⏳ Testen und Deploy **Alles ready! Nur noch n8n Code austauschen.** πŸŽ‰