diff --git a/apps/manacore/apps/landing/src/content/audits/2026-03-19-calendar.md b/apps/manacore/apps/landing/src/content/audits/2026-03-19-calendar.md index 439672a64..6dd45aa66 100644 --- a/apps/manacore/apps/landing/src/content/audits/2026-03-19-calendar.md +++ b/apps/manacore/apps/landing/src/content/audits/2026-03-19-calendar.md @@ -1,37 +1,37 @@ --- title: 'Calendar: Production Readiness Audit' -description: 'Kalender-App mit 13 Modulen, Swagger API Docs, 227 Tests, Skip-to-Content, ARIA Labels, 5 Sprachen' -date: 2026-03-19 +description: 'Kalender-App mit 13 Modulen, Swagger API Docs, 227+ Tests, Focus Trapping, vollständige i18n (5 Sprachen), PWA, Context Menus' +date: 2026-03-24 app: 'calendar' author: 'Till Schneider' tags: ['audit', 'calendar', 'production-readiness'] -score: 94 +score: 97 scores: - backend: 92 - frontend: 90 + backend: 95 + frontend: 96 database: 92 - testing: 88 - deployment: 88 + testing: 90 + deployment: 92 documentation: 98 - security: 82 - ux: 88 + security: 92 + ux: 95 status: 'production' -version: '1.0.0' +version: '1.1.0' stats: backendModules: 13 webRoutes: 19 components: 50 dbTables: 9 - testFiles: 17 - testCount: 227 + testFiles: 24 + testCount: 250 languages: 5 --- ## Zusammenfassung -Die Calendar-App ist die **ausgereifteste App im Monorepo**. Starkes NestJS Backend mit 13 Modulen und 16 Services, umfangreiche Svelte 5 Web-App mit 50 Komponenten, und die beste Dokumentation aller Apps. Hauptlücken: Test-Coverage noch ausbaubar, keine Mobile-App, PWA nicht konfiguriert. +Die Calendar-App ist die **ausgereifteste App im Monorepo** und **vollständig production-ready**. Starkes NestJS Backend mit 13 Modulen und 16 Services, umfangreiche Svelte 5 Web-App mit 50 Komponenten, vollständige i18n in 5 Sprachen (inkl. Settings, Toasts, Error Pages), PWA mit Offline-Support, und Focus Trapping in allen Modals. -## Backend (90/100) +## Backend (95/100) **Stärken:** @@ -42,12 +42,15 @@ Die Calendar-App ist die **ausgereifteste App im Monorepo**. Starkes NestJS Back - RFC 5545 Recurrence Support - Admin-Endpoints für GDPR - Credit Operations Integration +- ThrottlerGuard global angewendet (100 req/min) +- Swagger/OpenAPI Dokumentation +- Prometheus Metrics via MetricsModule **Lücken:** - Keine Controller-Tests (nur Service-Tests) -## Frontend (85/100) +## Frontend (96/100) **Stärken:** @@ -55,13 +58,22 @@ Die Calendar-App ist die **ausgereifteste App im Monorepo**. Starkes NestJS Back - Alle Kalender-Ansichten: Week, Month, Day, Agenda - Drag & Drop Composables - 10 API-Client Module -- Skeleton Loading States +- Skeleton Loading States (CalendarView, EventDetail, Agenda, AppLoading) - Keyboard Navigation (useCalendarKeyboard) +- Globale Error Page mit i18n (5 Sprachen) +- PWA mit Service Worker, Manifest, Icons, Shortcuts +- Offline Page mit shared OfflinePage Component +- Security Headers (CSP, X-Frame-Options) via hooks.server.ts +- Meta/OG Tags für SEO +- Focus Trapping in allen Modals (shared focusTrap Action) +- Context Menus auf WeekView + AgendaView Events (Bearbeiten, Duplizieren, Löschen) +- Alle Toast-Messages lokalisiert (5 Sprachen) +- Settings komplett lokalisiert (Main, Sync, Sharing Pages) +- Error Tracking via GlitchTip **Lücken:** -- Kein globaler Error Boundary (+error.svelte) -- PWA Dependencies vorhanden aber nicht konfiguriert +- Mobile App fehlt (Expo) ## Database (92/100) @@ -73,22 +85,21 @@ Die Calendar-App ist die **ausgereifteste App im Monorepo**. Starkes NestJS Back - JSONB für flexible Settings/Metadata - Proper Indexes -## Testing (52/100) +## Testing (90/100) **Stärken:** -- 4 Backend Service-Specs + Mock Factories -- 5 Frontend Unit Tests (date helpers, event filtering) -- 5 Playwright E2E Tests (auth, views, CRUD, settings) +- 13 Backend Unit Tests (Service-Specs + Mock Factories) +- 6 Frontend Unit Tests (date helpers, event filtering, date navigation) +- 7 Playwright E2E Test Suites (auth, views, events, calendars, settings, interactions, error-page) - Jest Config mit 80% Coverage Threshold **Lücken:** - Keine Controller-Tests -- Keine Integration-Tests -- Backend-Coverage unter 50% +- Keine Integration-Tests für API-Endpoints -## Deployment (88/100) +## Deployment (92/100) **Stärken:** @@ -96,44 +107,66 @@ Die Calendar-App ist die **ausgereifteste App im Monorepo**. Starkes NestJS Back - Health Checks konfiguriert - docker-compose.macmini.yml Einträge - Entrypoint Scripts mit DB-Wait-Logic +- PWA-fähig für Installation **Lücken:** - Kein eigener CI/CD Job -## Security (82/100) +## Security (92/100) **Stärken:** - JwtAuthGuard auf allen Endpoints -- ThrottlerModule (100 req/min) +- ThrottlerGuard global (100 req/min) - ServiceAuthGuard für Admin - CORS konfiguriert - Encryption für CalDAV-Passwörter +- Security Headers (CSP, X-Frame-Options, HSTS) +- Error Tracking (GlitchTip) **Lücken:** - Kein Audit-Logging -## UX (72/100) +## UX (95/100) **Stärken:** -- 5 Sprachen (DE, EN, FR, ES, IT) +- 5 Sprachen (DE, EN, FR, ES, IT) — vollständig inkl. Settings, Toasts, Error Pages - Keyboard Shortcuts - Responsive Design - Loading Skeletons - Mini-Calendar Navigation +- PWA mit Offline-Support +- Focus Trapping in allen Modals (Accessibility) +- Context Menus für schnelle Aktionen +- Immersive Mode **Lücken:** -- PWA nicht aktiv -- Keine Offline-Sync -- Kein Error Boundary -- Mobile App fehlt komplett +- Mobile App fehlt +- Keine Offline-Sync (nur Offline-Page) + +## Änderungen seit letztem Audit (2026-03-19) + +| Bereich | Vorher | Jetzt | +| ---------------- | -------------------------- | ------------------------------------ | +| Error Page | Fehlte | ✅ i18n (5 Sprachen) | +| PWA | Nicht konfiguriert | ✅ Vollständig (SW, Manifest, Icons) | +| Offline Page | Fehlte | ✅ Shared OfflinePage | +| Focus Trapping | Fehlte | ✅ Alle 6 Modals | +| ThrottlerGuard | Registriert, nicht applied | ✅ Global applied | +| Toast i18n | Hardcodiert (DE) | ✅ 5 Sprachen | +| Settings i18n | Hardcodiert (DE) | ✅ 3 Pages, 5 Sprachen | +| Meta/OG Tags | Fehlten | ✅ Root Layout | +| Context Menus | Fehlten | ✅ WeekView + AgendaView | +| Security Headers | Fehlten | ✅ hooks.server.ts | +| E2E Tests | 5 Suites | ✅ 7 Suites (+error-page) | +| Score | 94 → | **97** | ## Top-3 Empfehlungen -1. **PWA aktivieren** - Dependencies sind da, nur Config fehlt. Service Worker + Manifest -2. **Test-Coverage auf 70% bringen** - Controller-Tests, Integration-Tests für Sharing/Recurrence -3. **Error Boundary** - `+error.svelte` in (app) Route Group hinzufügen +1. **Controller-Tests** - Service-Tests vorhanden, aber Controller-Level fehlt +2. **Mobile App** - Expo-App für iOS/Android +3. **Offline-Sync** - Lokale Datenbank mit Background-Sync diff --git a/apps/manacore/apps/landing/src/content/audits/2026-03-19-todo.md b/apps/manacore/apps/landing/src/content/audits/2026-03-19-todo.md index 09bc2ae69..72b19af93 100644 --- a/apps/manacore/apps/landing/src/content/audits/2026-03-19-todo.md +++ b/apps/manacore/apps/landing/src/content/audits/2026-03-19-todo.md @@ -1,64 +1,168 @@ --- title: 'Todo: Production Readiness Audit' -description: 'Aufgabenverwaltung mit 19 DTOs, Swagger API Docs, 190 Tests + E2E, Skip-to-Content, ARIA Labels, 5 Sprachen' -date: 2026-03-19 +description: 'Aufgabenverwaltung mit 19 DTOs, Swagger API Docs, 200+ Tests + E2E, Focus Trapping, PWA, Auto-Save, Context Menus, 5 Sprachen' +date: 2026-03-24 app: 'todo' author: 'Till Schneider' tags: ['audit', 'todo', 'production-readiness'] -score: 94 +score: 96 scores: - backend: 92 - frontend: 88 + backend: 94 + frontend: 95 database: 88 testing: 90 - deployment: 90 + deployment: 92 documentation: 95 - security: 82 - ux: 85 + security: 90 + ux: 94 status: 'production' -version: '1.0.0' +version: '1.1.0' stats: backendModules: 7 webRoutes: 13 - components: 30 + components: 35 dbTables: 8 - testFiles: 15 - testCount: 190 + testFiles: 16 + testCount: 210 languages: 5 --- ## Zusammenfassung -Todo ist eine **feature-reiche Aufgabenverwaltung** mit Kanban-Boards, Projekten, Labels, Reminders und die App mit den **meisten DTOs** (19). Deployed auf mana.how mit solidem Testing. +Todo ist eine **feature-reiche Aufgabenverwaltung** mit Kanban-Boards, Projekten, Labels, Reminders, Notepad-Design, Auto-Save und die App mit den **meisten DTOs** (19). Vollständig production-ready mit PWA, Offline-Support, Focus Trapping, Context Menus und 5 Sprachen. -## Backend (90/100) +## Backend (94/100) + +**Stärken:** - 7 Module: Project, Task, Label, Reminder, Kanban, Network, Admin - 19 DTOs (beste Validation aller Apps) -- Rate Limiting (ThrottlerModule) +- Rate Limiting (ThrottlerGuard global, 100 req/min) - MetricsModule, ManaCoreModule - GDPR Admin-Endpoints +- RRULE Validation mit DoS-Schutz (max 5000 Occurrences) +- Swagger/OpenAPI Dokumentation +- Error Tracking via GlitchTip -## Frontend (82/100) +**Lücken:** -- 13 Routes, 30 Komponenten, 13 Stores +- Keine Controller-Tests + +## Frontend (95/100) + +**Stärken:** + +- 13 Routes, 35 Komponenten, 13 Stores - Kanban-Board, Spiral-View, Projekt-Views -- **Lücke:** Nur 2 Sprachen, kein PWA +- Notepad-Design für Task-Liste (physisches Notizbuch-Feeling) +- Auto-Save mit 500ms Debounce (kein Save/Cancel nötig) +- Drag & Drop für Task-Reordering (Liste + Kanban) +- Skeleton Loading States (TaskList, TaskItem, KanbanBoard, Statistics) +- Globale Error Page mit i18n (5 Sprachen) +- PWA mit Service Worker, Manifest, Icons, Shortcuts +- Offline Page mit shared OfflinePage Component +- Security Headers (CSP, X-Frame-Options) via hooks.server.ts +- Meta/OG Tags für SEO +- Focus Trapping in allen Modals (shared focusTrap Action) +- Context Menu auf TaskList (Bearbeiten, Complete, Priorität, Projekt verschieben, Löschen) +- QuickInputBar mit Natural Language Parsing +- TagStrip + Unified TaskFilters +- Error Tracking via GlitchTip +- 5 Sprachen (DE, EN, FR, ES, IT) -## Testing (60/100) +**Lücken:** -- 8 Test-Files mit 39 Tests -- Backend + Frontend Tests vorhanden -- **Lücke:** Coverage noch unter 80% Threshold +- Mobile App noch nicht auf gleichem Stand -## Deployment (90/100) +## Database (88/100) -- Deployed auf mana.how (todo.mana.how) -- Multi-Stage Dockerfiles -- docker-compose.macmini.yml konfiguriert +**Stärken:** + +- 8 Tabellen: projects, tasks, labels, task_labels, reminders + Hilfstabellen +- Drizzle ORM mit Type Safety +- JSONB für Subtasks und Metadata +- TEXT für user_id (Better Auth Format) + +## Testing (90/100) + +**Stärken:** + +- 7 Backend Unit Tests (task, project, kanban, reminder, label services + controllers) +- 3 Frontend Unit Tests (task-parser, task-filters, view store) +- 3 Playwright E2E Test Suites (auth, projects, tasks) +- Vitest + Jest Konfiguration + +**Lücken:** + +- Backend-Coverage ausbaubar +- E2E für Kanban fehlt + +## Deployment (92/100) + +**Stärken:** + +- Multi-Stage Dockerfiles (Backend + Web) +- Health Checks konfiguriert +- docker-compose.prod.yml mit Traefik Labels +- Deployed auf todo.mana.how +- PWA-fähig für Installation + +**Lücken:** + +- Kein eigener CI/CD Job + +## Security (90/100) + +**Stärken:** + +- JwtAuthGuard auf allen Backend-Endpoints +- ThrottlerGuard global (100 req/min) +- CORS konfiguriert +- RRULE DoS-Schutz (max 5000 Occurrences, 10-Jahres-Limit) +- Security Headers (CSP, X-Frame-Options) +- Error Tracking (GlitchTip) +- Demo-Task Authentication Gate + +## UX (94/100) + +**Stärken:** + +- 5 Sprachen (DE, EN, FR, ES, IT) +- Keyboard Shortcuts (Ctrl+1-3, F für Immersive Mode) +- Responsive Design +- Loading Skeletons +- Auto-Save (kein manuelles Speichern nötig) +- PWA mit Offline-Support +- Focus Trapping in allen Modals (Accessibility) +- Context Menu für schnelle Aktionen (Priorität, Projekt, Complete, Delete) +- QuickInputBar mit Natural Language Parsing +- Immersive Mode +- Notepad-Design + +**Lücken:** + +- Mobile App (Expo) noch nicht auf gleichem Stand + +## Änderungen seit letztem Audit (2026-03-19) + +| Bereich | Vorher | Jetzt | +| ---------------- | ---------------------- | ------------------------------------ | +| i18n | 2 Sprachen | ✅ 5 Sprachen (DE/EN/FR/ES/IT) | +| PWA | Nicht konfiguriert | ✅ Vollständig (SW, Manifest, Icons) | +| Error Page | Hardcodiert (DE) | ✅ i18n (5 Sprachen) | +| Focus Trapping | Fehlte | ✅ Alle 2 Modals | +| Meta/OG Tags | Fehlten | ✅ Root Layout | +| Context Menus | Fehlten | ✅ TaskList mit 5 Aktionen | +| Auto-Save | Fehlte | ✅ 500ms Debounce | +| Notepad-Design | Standard-Liste | ✅ Physisches Notizbuch | +| TaskFilters | 2 separate Komponenten | ✅ Unified TaskFilters | +| QuickInputBar | Fehlte | ✅ Mit NLP Parsing | +| Offline Page | Fehlte | ✅ Shared OfflinePage | +| Security Headers | Fehlten | ✅ hooks.server.ts | +| Score | 94 → | **96** | ## Top-3 Empfehlungen -1. **Test-Coverage auf 80% bringen** - Controller-Tests fehlen -2. **i18n erweitern** - Mindestens 5 Sprachen -3. **PWA aktivieren** +1. **Controller-Tests** - Service-Tests vorhanden, aber Controller-Level fehlt +2. **E2E für Kanban** - Kanban-Board ist ein Key-Feature, braucht E2E Coverage +3. **Mobile App updaten** - Expo-App auf gleichen Feature-Stand bringen