mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:01:09 +02:00
docs: update calendar and todo production readiness audits
Calendar: 94 → 97 (PWA, i18n complete, focus trapping, context menus, ThrottlerGuard, error page, security headers, meta tags) Todo: 94 → 96 (5 languages, PWA, focus trapping, context menus, auto-save, notepad design, QuickInputBar, meta tags) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
124b4f7cba
commit
0ddbad9aed
2 changed files with 202 additions and 65 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue