---
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
app: 'calendar'
author: 'Till Schneider'
tags: ['audit', 'calendar', 'production-readiness']
score: 94
scores:
  backend: 92
  frontend: 90
  database: 92
  testing: 88
  deployment: 88
  documentation: 98
  security: 82
  ux: 88
status: 'production'
stats:
  backendModules: 13
  webRoutes: 19
  components: 50
  dbTables: 9
  testFiles: 17
  testCount: 227
  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.

## Backend (90/100)

**Stärken:**

- 13 Module: Calendar, Event, Tags, TagGroups, Reminder, Share, Sync, Network, Email, Notification, Admin, Health, Database
- 16 Services mit sauberer Trennung
- 15 DTO-Klassen mit class-validator
- CalDAV/iCal Sync-Integration (tsdav, ical.js)
- RFC 5545 Recurrence Support
- Admin-Endpoints für GDPR
- Credit Operations Integration

**Lücken:**

- Keine Controller-Tests (nur Service-Tests)

## Frontend (85/100)

**Stärken:**

- 19 Routes, 50 Komponenten, 24 Stores (Svelte 5 Runes)
- Alle Kalender-Ansichten: Week, Month, Day, Agenda
- Drag & Drop Composables
- 10 API-Client Module
- Skeleton Loading States
- Keyboard Navigation (useCalendarKeyboard)

**Lücken:**

- Kein globaler Error Boundary (+error.svelte)
- PWA Dependencies vorhanden aber nicht konfiguriert

## Database (92/100)

**Stärken:**

- 9 Tabellen mit durchdachtem Schema
- Advisory Lock Migrations
- Drizzle ORM mit Type Safety
- JSONB für flexible Settings/Metadata
- Proper Indexes

## Testing (52/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)
- Jest Config mit 80% Coverage Threshold

**Lücken:**

- Keine Controller-Tests
- Keine Integration-Tests
- Backend-Coverage unter 50%

## Deployment (88/100)

**Stärken:**

- Multi-Stage Dockerfiles (Backend + Web)
- Health Checks konfiguriert
- docker-compose.macmini.yml Einträge
- Entrypoint Scripts mit DB-Wait-Logic

**Lücken:**

- Kein eigener CI/CD Job

## Security (82/100)

**Stärken:**

- JwtAuthGuard auf allen Endpoints
- ThrottlerModule (100 req/min)
- ServiceAuthGuard für Admin
- CORS konfiguriert
- Encryption für CalDAV-Passwörter

**Lücken:**

- Kein Audit-Logging

## UX (72/100)

**Stärken:**

- 5 Sprachen (DE, EN, FR, ES, IT)
- Keyboard Shortcuts
- Responsive Design
- Loading Skeletons
- Mini-Calendar Navigation

**Lücken:**

- PWA nicht aktiv
- Keine Offline-Sync
- Kein Error Boundary
- Mobile App fehlt komplett

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