Zum Hauptinhalt springen
← Alle ManaScores
Beta 19. März 2026 von Till Schneider

Zitare: Production Readiness Audit

Bewertung der Zitat-App - schlankes Backend, deployed auf mana.how, aber keine Tests und fehlende Dokumentation

Gesamtscore

Gewichteter Durchschnitt aus 8 Kategorien

62 /100

Kategorie-Scores

Backend
72
Frontend
78
Database
75
Testing
0
Deployment
92
Doku
20
Security
70
UX
75

Metriken

7.807 Lines of Code
70 Source Files
0.6 MB (Source)
105 Commits
3 Contributors
2025-11-28 Erster Commit
12 API Endpoints
5 Backend Module
13 Web Routes
20 Stores
2 Komponenten
2 DB Tabellen
0 Tests
0 Test Files
2 Sprachen
47 TODOs/FIXMEs
1425 Max File (LOC)
audit zitare production-readiness

Zusammenfassung

Zitare ist die einzige App neben Calendar die produktiv deployed ist (zitare.mana.how). Schlankes Backend mit Favorites + Lists, solide Web-App mit Svelte 5 und PWA. Aber: Null Tests, kein CLAUDE.md, und das einfachste Schema aller Apps. Die App profitiert von der statischen Quote-Content-Bibliothek (64 Zitate in 6 Sprachen).

Backend (72/100)

Stärken:

  • 5 Module: Favorite, List, Admin, Database, Health
  • Saubere NestJS-Architektur
  • Admin-Endpoints für GDPR (getUserData, deleteUserData)
  • ServiceAuthGuard für Admin-Zugriff
  • Conflict-Detection bei Favorites

Lücken:

  • Nur 3 Controller (minimal)
  • Keine Metrics/Monitoring
  • Kein ThrottlerModule (Rate Limiting fehlt)

Frontend (78/100)

Stärken:

  • 13 Routes: Home, Categories, Favorites, Lists, Search, Settings, Feedback
  • 7 Stores (Svelte 5 Runes) inkl. SSO-Support
  • QuoteCard Komponente mit Share, Favorite Toggle
  • Kategorie-Gradients (10 Farben)
  • Token Auto-Refresh auf 401

Lücken:

  • Nur 2 eigene Komponenten (sehr wenige)
  • Kein Error Boundary
  • Keine Skeleton Loading States

Database (75/100)

Stärken:

  • 2 Tabellen: favorites, user_lists
  • Unique Constraint auf (user_id, quote_id)
  • JSONB für flexible quote_ids in Listen
  • Drizzle ORM konfiguriert

Lücken:

  • Kein Seed-Script
  • Nur 2 Tabellen - sehr minimal
  • Keine Indexes auf user_id (Performance bei Scale)

Testing (0/100)

Keine Tests vorhanden. Weder Unit, Integration noch E2E Tests. Kein Jest Config. Größte Schwachstelle der App.

Deployment (92/100)

Stärken:

  • Produktiv deployed auf zitare.mana.how
  • Multi-Stage Dockerfiles (Backend + Web)
  • Health Checks (30s Interval, 3 Retries)
  • docker-compose.macmini.yml vollständig konfiguriert
  • Backend + Web Services mit Dependency Chain
  • CORS für Production Domain

Lücken:

  • Kein automatischer CI/CD Job (manuelles Deployment)

Documentation (20/100)

Kritische Lücke: Kein apps/zitare/CLAUDE.md vorhanden. Keine API-Dokumentation. Kein README. Nur die Monorepo-Root-Doku referenziert Zitare.

Security (70/100)

Stärken:

  • JwtAuthGuard auf User-Endpoints
  • ServiceAuthGuard auf Admin-Endpoints (X-Service-Key)
  • GDPR-compliant: User Data Export + Deletion
  • CORS konfiguriert für Production

Lücken:

  • Kein Rate Limiting
  • Keine Input-Sanitization über DTOs hinaus

UX (75/100)

Stärken:

  • 2 Sprachen (DE, EN) mit svelte-i18n
  • PWA konfiguriert (@vite-pwa/sveltekit)
  • Offline Fallback Page
  • Dark/Light Theme
  • 64 kuratierte Zitate in 6 Sprachen
  • Kategorie-basierte Navigation

Lücken:

  • Keine Offline-Sync für Favorites
  • Keine Push-Notifications (“Zitat des Tages”)
  • Mobile App fehlt
  • Landing Page fehlt

Top-3 Empfehlungen

  1. Tests schreiben - Mindestens FavoriteService + ListService Specs (schnell machbar, ~100 Zeilen pro Service)
  2. CLAUDE.md erstellen - API-Endpoints, Schema, Commands dokumentieren
  3. Rate Limiting - ThrottlerModule hinzufügen, besonders für POST-Endpoints