Calendar: Production Readiness Audit
Kalender-App mit Hono/Bun Backend, 44 Komponenten, 16 Svelte 5 Stores, Multi-Event Splitting, Cmd+K Spotlight, Local-First, PWA, 5 Sprachen
Gesamtscore
Gewichteter Durchschnitt aus 8 Kategorien
↑ 11 Punkte seit erstem Assessment
Kategorie-Scores
Lighthouse Scores
Google Lighthouse Performance Audit
API Conformity
Konsistenz der Backend-API
Cross-App Consistency
Nutzung der shared Packages
Dependency Health
Paketstand und Sicherheit (geprüft 2026-04-01)
Metriken
Zusammenfassung
Die Calendar-App ist eine der ausgereiftesten Apps im Monorepo. Seit dem letzten Audit wurde das Backend von NestJS auf Hono/Bun migriert — CRUD läuft client-seitig über @mana/local-store + mana-sync. Der Server fokussiert sich auf RRULE-Expansion, Google Calendar Sync und ICS-Import. Neue Features: Multi-Event Splitting, Elevation System, Cmd+K Spotlight.
Backend (90/100)
Architektur: Hono 4.7.0 + Bun (migriert von NestJS)
Stärken:
- 3 fokussierte Server-Routes:
/api/v1/events/expand(POST) — RRULE Expansion mit DoS-Schutz/api/v1/sync/google(POST) — Google Calendar OAuth/api/v1/import/ics(POST) — ICS-Datei Parsing und Import
@mana/shared-honoMiddleware (Auth, Health, Errors, Rate Limiting)- Zod-Validation für alle Eingaben
- GDPR-konform (Daten via mana-sync)
Lücken:
- Google Calendar Sync noch TODO (Route existiert, Implementation ausstehend)
- Keine Backend-Unit-Tests
- Keine Swagger/OpenAPI Dokumentation
Frontend (96/100)
Stärken:
- 20 Routes, 44 Komponenten, 16 Svelte 5 Runes Stores
- Alle Kalender-Ansichten: Week, Month, Day, Agenda
- Multi-Event Splitting mit Duration Estimation und Conflict Detection
- Cmd+K Spotlight für schnelle Navigation und Aktionen
- Elevation System für konsistente UI-Tiefe
- Drag & Drop Composables (useDragToCreate, useEventDragDrop)
- Voice Recording (VoiceRecordButton, VoiceRecordingModal)
- Mini-Calendar Navigation
- Skeleton Loading States (CalendarView, EventDetail, Agenda, AppLoading)
- Keyboard Navigation (useCalendarKeyboard)
- Context Menus auf WeekView + AgendaView (Bearbeiten, Duplizieren, Löschen)
- Focus Trapping in allen Modals
- Security Headers (CSP, X-Frame-Options) via hooks.server.ts
- PWA mit Service Worker, Manifest, Icons, Shortcuts
- Offline Page mit shared OfflinePage Component
- Error Tracking via GlitchTip
- 5 Sprachen (DE, EN, FR, ES, IT) — vollständig inkl. Settings, Toasts, Error Pages
- Local-First via @mana/local-store (IndexedDB + mana-sync)
Lücken:
- Mobile App fehlt (Expo)
Database (88/100)
Stärken:
- Server-seitig: 3 Tabellen mit Drizzle ORM
- Client-seitig: Collections (calendars, events) via local-store
- JSONB für flexible Settings/Metadata
Lücken:
- Server-Schema minimal (CRUD client-seitig)
Testing (85/100)
Stärken:
- 15 Frontend Unit/Integration Tests:
- API Tests: events, reminders, sync (3)
- Composables: useDragToCreate, useEventDragDrop (2)
- Stores: events, external-calendars, view, events-recurrence (4)
- Utilities: event-parser, event-estimator, dateNavigation, eventFilters, eventDateHelpers (5)
- Content: help index (1)
- 7 Playwright E2E Suites (auth, calendar-views, events, calendars, settings, week-view-interactions, error-page)
- ~196 Test-Assertions insgesamt
- Vitest + Playwright Konfiguration
Lücken:
- Keine Backend-Tests (Hono-Routes)
- Test-Anzahl reduziert (250 → 196 durch Refactoring)
Deployment (92/100)
Stärken:
- Multi-Stage Dockerfiles (Server + Web)
- Health Checks konfiguriert
- docker-compose.macmini.yml Einträge
- Deployed auf calendar.mana.how
- PWA-fähig für Installation
Lücken:
- Kein eigener CI/CD Job
Security (90/100)
Stärken:
- JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware
- CORS konfiguriert
- RRULE DoS-Schutz
- Security Headers (CSP, X-Frame-Options, HSTS)
- Error Tracking (GlitchTip)
Lücken:
- Kein Audit-Logging
UX (96/100)
Stärken:
- 5 Sprachen (DE, EN, FR, ES, IT) — vollständig inkl. Settings, Toasts, Error Pages
- Cmd+K Spotlight für schnelle Aktionen
- Keyboard Shortcuts + Calendar Keyboard Navigation
- Responsive Design
- Loading Skeletons
- Mini-Calendar Navigation
- PWA mit Offline-Support
- Focus Trapping (Accessibility)
- Context Menus für schnelle Aktionen
- Voice Recording Integration
- Elevation System für visuelle Konsistenz
- Multi-Event Splitting mit Conflict Detection
Lücken:
- Mobile App fehlt
- Keine Offline-Sync (nur Offline-Page)
Änderungen seit letztem Audit (2026-03-24)
| Bereich | Vorher | Jetzt |
|---|---|---|
| Backend | NestJS (13 Module, 16 Services, 15 DTOs) | Hono/Bun (3 Routes, Zod) |
| Komponenten | 50 | 44 (Todo-Integration entfernt) |
| Stores | 24 (nicht spezifiziert) | 16 Svelte 5 Runes Stores |
| Tests | 24 Files, 250 Tests | 22 Files, ~196 Tests |
| Spotlight | Fehlte | Cmd+K Actions |
| Multi-Event | Fehlte | Splitting + Duration Estimation |
| Elevation | Fehlte | Konsistentes UI-System |
| Todo-Integration | Vorhanden | Entfernt (Separation of Concerns) |
| Local-First | Geplant | @mana/local-store aktiv |
| Score | 97 → | 93 (Backend-Tests verloren, Test-Reduktion) |
Top-3 Empfehlungen
- Backend-Tests — RRULE-Expansion und ICS-Import brauchen Unit-Tests
- Google Calendar Sync — Route existiert, Implementation ausstehend
- Mobile App — Expo-App für iOS/Android