From 490f8220dd88b37dbec404842840eceb32a5cc53 Mon Sep 17 00:00:00 2001 From: Till JS Date: Tue, 24 Mar 2026 10:34:15 +0100 Subject: [PATCH] docs(calendar,todo): add production readiness audit to CLAUDE.md Document complete production readiness checklist, E2E test suites, and current status for both apps. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/calendar/CLAUDE.md | 44 ++++++++++++++++++++++++++++++++-- apps/todo/CLAUDE.md | 53 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/apps/calendar/CLAUDE.md b/apps/calendar/CLAUDE.md index 187b3bcb1..f291896b2 100644 --- a/apps/calendar/CLAUDE.md +++ b/apps/calendar/CLAUDE.md @@ -548,6 +548,48 @@ curl -X POST http://localhost:3014/api/v1/events \ }' ``` +## Production Readiness + +**Status: Production-Ready (2026-03-24)** + +### Checklist + +| Category | Status | Details | +|----------|--------|---------| +| **Error Handling** | ✅ | Global `+error.svelte` with i18n (5 languages), error tracking via GlitchTip | +| **Offline Support** | ✅ | Offline page with shared `OfflinePage` component | +| **PWA** | ✅ | Service worker, manifest, icons, apple-touch-icon, shortcuts | +| **Security Headers** | ✅ | CSP, X-Frame-Options, HSTS via `setSecurityHeaders()` | +| **Loading States** | ✅ | Skeleton loaders: CalendarView, EventDetail, Agenda, AppLoading | +| **i18n** | ✅ | 5 languages (DE/EN/FR/ES/IT), all pages including settings fully localized | +| **Meta/SEO** | ✅ | OG tags, meta description in root layout | +| **Accessibility** | ✅ | Focus trapping in all modals, ARIA roles, keyboard navigation | +| **Rate Limiting** | ✅ | ThrottlerGuard global (100 req/min) | +| **API Validation** | ✅ | DTOs with class-validator, whitelist + forbidNonWhitelisted | +| **Auth** | ✅ | JWT via mana-core-auth, guards on all controllers | +| **Toast System** | ✅ | All toast messages localized via svelte-i18n | +| **Docker** | ✅ | Multi-stage build, health checks, entrypoint script | +| **Tests** | ✅ | 13 unit tests, 7 E2E test suites (Playwright) | +| **Error Tracking** | ✅ | GlitchTip integration (client + server) | +| **Metrics** | ✅ | Prometheus via MetricsModule | +| **Context Menu** | ✅ | Shared ContextMenu on WeekView + AgendaView events | + +### E2E Test Suites + +```bash +pnpm --filter @calendar/web test:e2e +``` + +| Suite | Coverage | +|-------|----------| +| `auth.spec.ts` | Login, redirect, invalid credentials | +| `calendar-views.spec.ts` | Week/month/agenda views, navigation | +| `events.spec.ts` | Event CRUD | +| `calendars.spec.ts` | Calendar management | +| `settings.spec.ts` | Settings page | +| `week-view-interactions.spec.ts` | Drag-to-create, time indicator | +| `error-page.spec.ts` | 404 error page | + ## Roadmap / TODO - [ ] Mobile App (Expo) @@ -555,10 +597,8 @@ curl -X POST http://localhost:3014/api/v1/events \ - [ ] CalDAV Sync Implementation - [ ] Push Notifications - [ ] E-Mail Reminders -- [ ] Drag & Drop Events - [ ] Event Attendees - [ ] Calendar Import/Export -- [ ] Offline Support - [ ] Dark/Light Theme in Landing ## Important Notes diff --git a/apps/todo/CLAUDE.md b/apps/todo/CLAUDE.md index affb10e98..d5865ae2f 100644 --- a/apps/todo/CLAUDE.md +++ b/apps/todo/CLAUDE.md @@ -243,6 +243,59 @@ Recognized patterns: - **Formatting**: Prettier with project config - **i18n**: All UI text in locale files +## Production Readiness + +**Status: Production-Ready (2026-03-24)** + +### Checklist + +| Category | Status | Details | +|----------|--------|---------| +| **Error Handling** | ✅ | Global `+error.svelte` with i18n (5 languages), error tracking via GlitchTip | +| **Offline Support** | ✅ | Offline page with shared `OfflinePage` component | +| **PWA** | ✅ | Service worker, manifest, icons, shortcuts (New task, Kanban, Settings) | +| **Security Headers** | ✅ | CSP, X-Frame-Options via `setSecurityHeaders()` | +| **Loading States** | ✅ | Skeleton loaders: TaskList, TaskItem, KanbanBoard, KanbanColumn, Statistics | +| **i18n** | ✅ | 5 languages (DE/EN/FR/ES/IT) via svelte-i18n | +| **Meta/SEO** | ✅ | OG tags, meta description in root layout | +| **Accessibility** | ✅ | Focus trapping in all modals, ARIA roles, keyboard shortcuts | +| **Rate Limiting** | ✅ | ThrottlerGuard global (100 req/min) | +| **API Validation** | ✅ | DTOs with class-validator, RRULE DoS protection (max 5000 occurrences) | +| **Auth** | ✅ | JWT via mana-core-auth, client-side redirect in `onMount` | +| **Toast System** | ✅ | Toast notifications via shared `toastStore` | +| **Docker** | ✅ | Multi-stage build (web + backend), health checks, Traefik labels | +| **Tests** | ✅ | Unit tests (7 backend, 3 web), E2E tests (3 suites: auth, projects, tasks) | +| **Error Tracking** | ✅ | GlitchTip integration (client + server) | +| **Metrics** | ✅ | Prometheus via MetricsModule | +| **Context Menu** | ✅ | Shared ContextMenu on TaskList (priority, project, complete, delete) | +| **Auto-Save** | ✅ | 500ms debounce, no save/cancel buttons needed | +| **Drag & Drop** | ✅ | Task reordering in list + kanban views | + +### Test Suites + +```bash +# Unit tests +pnpm --filter @todo/backend test +pnpm --filter @todo/web test + +# E2E tests +pnpm --filter @todo/web test:e2e +``` + +| Type | Suite | Coverage | +|------|-------|----------| +| Unit (Backend) | `task.service.spec.ts` | Task CRUD, recurrence | +| Unit (Backend) | `project.service.spec.ts` | Project management | +| Unit (Backend) | `kanban.service.spec.ts` | Kanban operations | +| Unit (Backend) | `reminder.service.spec.ts` | Reminders | +| Unit (Backend) | `label.service.spec.ts` | Labels | +| Unit (Web) | `task-parser.test.ts` | Natural language parsing | +| Unit (Web) | `task-filters.test.ts` | Filter logic | +| Unit (Web) | `view.test.ts` | View store state | +| E2E | `auth.spec.ts` | Login, redirect | +| E2E | `projects.spec.ts` | Project CRUD | +| E2E | `tasks.spec.ts` | Task CRUD | + ## Important Notes 1. **Authentication**: Uses Mana Core Auth (JWT in Authorization header)