feat: secure and document book reviews system
Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Failing after 10m3s

Added rate limiting to APIs, cleaned up docs, implemented fallback logic for reviews without text, and added comprehensive n8n guide.
This commit is contained in:
2026-02-15 22:32:49 +01:00
parent 0766b46cc8
commit 6998a0e7a1
22 changed files with 3141 additions and 4135 deletions

67
TODO.md
View File

@@ -1,51 +1,28 @@
# TODO - Portfolio Roadmap
# Portfolio Roadmap
## Book Reviews (Neu)
## Completed ✅
- [ ] **Directus Collection erstellen**: `book_reviews` mit Feldern:
- `status` (draft/published)
- `book_title` (String)
- `book_author` (String)
- `book_image` (String, URL zum Cover)
- `rating` (Integer, 1-5)
- `hardcover_id` (String, optional)
- `finished_at` (Datetime, optional)
- Translations: `review` (Text) + `languages_code` (FK)
- [ ] **n8n Workflow**: Automatisch Directus-Entwurf erstellen wenn Buch auf Hardcover als "gelesen" markiert wird
- [ ] **Hardcover GraphQL Query** für gelesene Bücher: `status_id: {_eq: 3}` (Read)
- [ ] **Erste Testdaten**: 2-3 gelesene Bücher mit Rating + Kommentar in Directus anlegen
- [x] **Dark Mode Support**: `next-themes` integration, `ThemeToggle` component, and dark mode styles.
- [x] **Performance**: Replaced `<img>` with Next.js `<Image>` for optimization.
- [x] **SEO**: Added JSON-LD Structured Data for projects.
- [x] **Security**: Rate limiting added to `book-reviews`, `hobbies`, and `tech-stack` APIs.
- [x] **Book Reviews**:
- `ReadBooks` component updated to handle optional ratings/reviews.
- `CurrentlyReading` component verified.
- Automation guide created (`docs/N8N_HARDCOVER_GUIDE.md`).
- [x] **Testing**: Added tests for `book-reviews`, `hobbies`, `tech-stack`, `CurrentlyReading`, and `ThemeToggle`.
## Directus CMS
## Next Steps
- [ ] Messages Collection: `messages` mit key + translations (ersetzt `messages/*.json`)
- [ ] Projects vollständig zu Directus migrieren (`node scripts/migrate-projects-to-directus.js`)
- [ ] Directus Webhooks einrichten: On-Demand ISR Revalidation bei Content-Änderungen
- [ ] Directus Roles: Public Read Token, Admin Write
### Directus CMS
- [ ] **Messages Collection**: Create `messages` collection in Directus for dynamic i18n (currently using `messages/*.json`).
- [ ] **Projects Migration**: Finish migrating projects content to Directus (script exists: `scripts/migrate-projects-to-directus.js`).
- [ ] **Webhooks**: Configure Directus webhooks for On-Demand ISR Revalidation.
## n8n Integrationen
### Features
- [ ] **Blog/Articles**: Design and implement the blog section.
- [ ] **Project Detail Gallery**: Add a lightbox/gallery for project screenshots.
- [ ] Hardcover "Read Books" Webhook: Gelesene Bücher automatisch in Directus importieren
- [ ] Spotify Now Playing verbessern: Album-Art Caching
- [ ] Discord Rich Presence: Gaming-Status automatisch aktualisieren
## Frontend
- [ ] Dark Mode Support (Theme Toggle)
- [ ] Blog/Artikel Sektion (Directus-basiert)
- [ ] Projekt-Detail Seite: Bildergalerie/Lightbox
- [ ] Performance: Bilder auf Next.js `<Image>` umstellen (statt `<img>`)
- [ ] SEO: Structured Data (JSON-LD) für Projekte
## Testing & Qualität
- [ ] Jest Tests für neue API-Routes (`book-reviews`, `hobbies`, `tech-stack`)
- [ ] Playwright E2E: Book Reviews Sektion testen
- [ ] Lighthouse Score > 95 auf allen Seiten sicherstellen
- [ ] Accessibility Audit (WCAG 2.1 AA)
## DevOps
- [ ] Staging Environment aufräumen und dokumentieren
- [ ] GitHub Actions Migration (von Gitea Actions)
- [ ] Docker Image Size optimieren (Multi-Stage Build prüfen)
- [ ] Health Check Endpoint erweitern: Directus + n8n Connectivity
### DevOps
- [ ] **GitHub Actions**: Migrate CI/CD fully to GitHub Actions (from Gitea).
- [ ] **Docker Optimization**: Further reduce image size.