Contacts: Production Readiness Audit
Kontaktverwaltung mit Hono/Bun Backend, Avatar Upload, vCard Import, Spiral-Visualisierung, Cmd+K Spotlight, Local-First, PWA, 5 Sprachen, E2E Tests
Gesamtscore
Gewichteter Durchschnitt aus 8 Kategorien
↓ 2 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
Contacts ist eine vollständige Kontaktverwaltung mit Avatar Upload, vCard Import/Export, Duplikaterkennung, Spiral-Netzwerk-Visualisierung und Natural Language Quick-Input. Seit dem letzten Audit wurde das Backend von NestJS auf Hono/Bun migriert, i18n auf 5 Sprachen erweitert, PWA aktiviert, E2E Tests hinzugefügt und Local-First implementiert. Deployed auf mana.how.
Backend (88/100)
Architektur: Hono 4.7.0 + Bun (migriert von NestJS)
Stärken:
- ~6 API-Endpoints (server-seitige Operationen):
- Health Check
- Avatar Upload (S3/MinIO via @mana/shared-storage)
- vCard Import (Parsing + Validation)
@mana/shared-honoMiddleware (Auth, Health, Errors, Rate Limiting)- S3 Storage Integration für Contact-Fotos
- CRUD delegiert an mana-sync (Local-First)
Lücken:
- Minimale Server-Logik (Großteil client-seitig)
- Keine Backend-Unit-Tests
- Keine Swagger/OpenAPI Dokumentation
- Google OAuth Import nicht mehr verfügbar (NestJS-Migration)
Frontend (95/100)
Stärken:
- 15 Routes, 39 Komponenten (27 Standard + 12 Skeleton), 14 Svelte 5 Stores
- Spiral-Netzwerk-Visualisierung (@mana/spiral-db)
- Cmd+K Spotlight für schnelle Navigation und Aktionen
- NL Quick-Input mit Client-seitiger Duplikaterkennung (Fuzzy Matching)
- Context Menus (Alphabet-Navigation, Grid-View)
- Import/Export (vCard, CSV)
- Duplikaterkennung und Merge-Management
- Archive-Ansicht für gelöschte Kontakte
- Skeleton Loading States (12 Skeleton-Komponenten)
- 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)
- Local-First via @mana/local-store (IndexedDB + mana-sync)
- SyncIndicator UI (visueller Sync-Status)
Lücken:
- Mobile App fehlt (Expo)
Database (85/100)
Stärken:
- Server-seitig: 2 Tabellen mit Drizzle ORM
- Client-seitig: Collections (contacts, tags) via local-store
- Reactive Queries via useLiveQuery
Lücken:
- Server-Schema minimal (CRUD client-seitig)
Testing (85/100)
Stärken:
- 6 Frontend Unit Tests (~115 Assertions)
- 3 Playwright E2E Suites (auth, contacts, tags) — NEU seit letztem Audit
- ~10 E2E Szenarien
- ~125 Tests insgesamt
- Vitest + Playwright Konfiguration
Lücken:
- Keine Backend-Tests
- E2E für Import/Export fehlt
- E2E für Duplikaterkennung fehlt
Deployment (92/100)
Stärken:
- Multi-Stage Dockerfiles (Server + Web)
- Health Checks konfiguriert
- docker-compose.macmini.yml Einträge
- Deployed auf contacts.mana.how
- PWA-fähig für Installation
- Landing Page (Astro) vorhanden — NEU seit letztem Audit
Lücken:
- Kein eigener CI/CD Job
Security (88/100)
Stärken:
- JWT Auth via @mana/shared-hono authMiddleware
- Rate Limiting Middleware
- CORS konfiguriert
- Security Headers (CSP, X-Frame-Options)
- Error Tracking (GlitchTip)
- WebAuthn/Passkey Support (Auth)
Lücken:
- Google OAuth Import nicht mehr verfügbar
- Kein Audit-Logging
UX (95/100)
Stärken:
- 5 Sprachen (DE, EN, FR, ES, IT) — erweitert von 2 Sprachen
- Cmd+K Spotlight für schnelle Aktionen
- NL Quick-Input mit Duplikaterkennung
- Spiral-Netzwerk-Visualisierung
- Responsive Design
- Loading Skeletons (12 Varianten)
- PWA mit Offline-Support
- Focus Trapping (Accessibility)
- Context Menus
- SyncIndicator
- Archive-Ansicht
Lücken:
- Mobile App fehlt
Änderungen seit letztem Audit (2026-03-19)
| Bereich | Vorher | Jetzt |
|---|---|---|
| Backend | NestJS (14 Module, 12 Controller, 4 DTOs) | Hono/Bun (2 Route-Files, Zod) |
| i18n | 2 Sprachen (DE, EN) | 5 Sprachen (DE, EN, FR, ES, IT) |
| E2E Tests | Keine | 3 Playwright Suites (auth, contacts, tags) |
| PWA | Nicht konfiguriert | Aktiv (@vite-pwa/sveltekit) |
| Landing Page | Fehlte | Astro Landing Page |
| Local-First | Nicht vorhanden | @mana/local-store aktiv |
| Spiral-Viz | Nicht vorhanden | @mana/spiral-db integriert |
| Spotlight | Fehlte | Cmd+K Actions |
| NL Quick-Input | Fehlte | Mit Fuzzy Duplikaterkennung |
| SyncIndicator | Fehlte | Visueller Sync-Status |
| Google OAuth | Vorhanden (NestJS) | Entfernt (Migration) |
| Score | 94 → | 92 (Backend-Reduktion, Google OAuth verloren) |
Top-3 Empfehlungen
- Backend-Tests — Avatar Upload und vCard Import brauchen Unit-Tests
- Google OAuth wiederherstellen — Import-Feature bei NestJS-Migration verloren
- E2E für Import/Export — vCard/CSV Import/Export Flows testen