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) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-24 10:34:15 +01:00
parent c4bdc6a9c2
commit 490f8220dd
2 changed files with 95 additions and 2 deletions

View file

@ -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

View file

@ -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)