docs(audits): update chat, picture, mukke audit reports with improved scores

Reflect production readiness improvements: Chat 74→82, Picture 72→81, Mukke 71→80.
Also fix Dockerfiles to include shared-error-tracking and shared-nestjs-setup packages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-19 15:24:05 +01:00
parent 3b8931090f
commit 01cd7e90d2
6 changed files with 125 additions and 62 deletions

View file

@ -19,6 +19,7 @@ COPY packages/shared-errors ./packages/shared-errors
COPY packages/shared-nestjs-auth ./packages/shared-nestjs-auth
COPY packages/shared-nestjs-health ./packages/shared-nestjs-health
COPY packages/shared-nestjs-metrics ./packages/shared-nestjs-metrics
COPY packages/shared-error-tracking ./packages/shared-error-tracking
COPY packages/shared-nestjs-setup ./packages/shared-nestjs-setup
COPY packages/shared-tsconfig ./packages/shared-tsconfig
@ -40,6 +41,8 @@ WORKDIR /app/packages/shared-nestjs-health
RUN pnpm build
WORKDIR /app/packages/shared-nestjs-metrics
COPY packages/shared-error-tracking ./packages/shared-error-tracking
RUN pnpm build
WORKDIR /app/packages/shared-nestjs-setup

View file

@ -17,6 +17,7 @@ COPY packages/shared-errors ./packages/shared-errors
COPY packages/shared-nestjs-auth ./packages/shared-nestjs-auth
COPY packages/shared-nestjs-health ./packages/shared-nestjs-health
COPY packages/shared-nestjs-metrics ./packages/shared-nestjs-metrics
COPY packages/shared-error-tracking ./packages/shared-error-tracking
COPY packages/shared-nestjs-setup ./packages/shared-nestjs-setup
COPY packages/shared-storage ./packages/shared-storage
COPY packages/shared-tsconfig ./packages/shared-tsconfig
@ -38,6 +39,8 @@ WORKDIR /app/packages/shared-nestjs-health
RUN pnpm build
WORKDIR /app/packages/shared-nestjs-metrics
COPY packages/shared-error-tracking ./packages/shared-error-tracking
RUN pnpm build
WORKDIR /app/packages/shared-nestjs-setup

View file

@ -1,19 +1,19 @@
---
title: 'Chat: Production Readiness Audit'
description: 'AI-Chat mit 9 Backend-Modulen, 9 KI-Modellen (Ollama + OpenRouter), 5 Sprachen, deployed auf mana.how - aber keine Tests'
description: 'AI-Chat mit 9 Backend-Modulen, 9 KI-Modellen (Ollama + OpenRouter), 5 Sprachen, deployed auf mana.how - mit Rate Limiting, DTOs, 78 Tests und DB-Indexes'
date: 2026-03-19
app: 'chat'
author: 'Till Schneider'
tags: ['audit', 'chat', 'production-readiness', 'ai']
score: 74
score: 82
scores:
backend: 88
backend: 90
frontend: 82
database: 85
testing: 0
database: 95
testing: 60
deployment: 92
documentation: 85
security: 72
security: 82
ux: 80
status: 'production'
stats:
@ -21,23 +21,27 @@ stats:
webRoutes: 24
components: 17
dbTables: 7
testFiles: 0
testCount: 0
testFiles: 2
testCount: 78
languages: 5
---
## Zusammenfassung
Chat ist die **feature-reichste AI-App** im Monorepo mit 9 KI-Modellen (7 lokale Ollama + 2 Cloud OpenRouter), deployed auf mana.how. Vollständige Multi-Plattform (Web, Mobile, Landing). Größte Schwäche: keine Tests.
Chat ist die **feature-reichste AI-App** im Monorepo mit 9 KI-Modellen (7 lokale Ollama + 2 Cloud OpenRouter), deployed auf mana.how. Vollständige Multi-Plattform (Web, Mobile, Landing). Seit dem letzten Audit: Rate Limiting, Input-Validierung, DB-Indexes und 78 Tests hinzugefügt.
## Backend (88/100)
## Backend (90/100)
- 9 Module: Chat, Conversation, Template, Space, Document, Model, Admin, Database, Health
- 7 Controller mit CRUD
- ManaCoreModule Integration (Auth + Credits)
- MetricsModule für Monitoring
- Health Checks konfiguriert
- **Lücke:** Kein Rate Limiting, nur 2 DTOs
- ThrottlerModule (100 req/60s) für Rate Limiting
- DTOs mit class-validator für Conversation, Template und Chat-Completion (@MaxLength, @IsOptional)
- Space-Mitgliedschaft wird bei getSpaceMembers geprüft
- inviteUserToSpace prüft Owner/Admin-Berechtigung
- GDPR-Delete umfasst jetzt Templates + UsageLogs
## Frontend (82/100)
@ -45,11 +49,31 @@ Chat ist die **feature-reichste AI-App** im Monorepo mit 9 KI-Modellen (7 lokale
- 5 Sprachen (DE, EN, IT, FR, ES)
- Mobile App (Expo SDK 52) vorhanden
- Landing Page (Astro) vorhanden
- XSS-Fix: JSON.stringify für Env-Var-Injection in hooks.server.ts
- **Lücke:** Keine PWA, kein Error Boundary
## Testing (0/100)
## Database (95/100)
**Keine Tests.** Kritische Lücke für eine deployed App.
- 7 Tabellen mit vollständigen Indexes auf allen Tabellen
- Unique Constraint auf spaceMembers(spaceId, userId) verhindert Duplikate
- Indexes auf userId, conversationId, spaceId für alle relevanten Tabellen
- **Lücke:** Keine Volltextsuche-Indexes
## Testing (60/100)
- 2 Service-Specs: ConversationService (37 Tests), SpaceService (41 Tests)
- Mock Factories mit createMockConversation, createMockMessage, createMockSpace, etc.
- Jest Config vorhanden
- **Lücke:** Keine Controller-Tests, keine Frontend-Tests, keine E2E Tests
## Security (82/100)
- Auth Guards auf allen Endpoints (ManaCoreModule)
- ThrottlerModule Rate Limiting (100 req/60s)
- @MaxLength(50000) auf Chat-Content
- Input-Validierung via DTOs
- Space-Berechtigungsprüfungen (Member, Owner/Admin)
- **Lücke:** Keine File-Size Validation
## Deployment (92/100)
@ -59,6 +83,6 @@ Chat ist die **feature-reichste AI-App** im Monorepo mit 9 KI-Modellen (7 lokale
## Top-3 Empfehlungen
1. **Tests schreiben** - Chat/Conversation Service Specs (kritisch für deployed App)
2. **Rate Limiting** - ThrottlerModule besonders für AI-Endpoints
3. **PWA aktivieren** - Dependencies vorhanden
1. **Test-Coverage erhöhen** - Controller-Tests und Frontend-Tests hinzufügen
2. **PWA aktivieren** - Dependencies vorhanden
3. **Streaming-Timeouts** - Timeout-Handling für AI-Streaming-Endpoints

View file

@ -1,19 +1,19 @@
---
title: 'Mukke: Production Readiness Audit'
description: 'Bewertung der Musik-App - vollständiges Backend mit Library/Playlist/Export, Audio-Editor Web-App, aber neue App ohne Produktions-Erfahrung'
description: 'Musik-App mit Library/Playlist/Export, Audio-Editor, Rate Limiting, Transaktionen, DB-Indexes und 113 Tests - bereit für Beta-Deployment'
date: 2026-03-19
app: 'mukke'
author: 'Till Schneider'
tags: ['audit', 'mukke', 'production-readiness']
score: 71
score: 80
scores:
backend: 85
backend: 90
frontend: 78
database: 82
testing: 45
database: 90
testing: 65
deployment: 85
documentation: 80
security: 68
security: 78
ux: 60
status: 'beta'
stats:
@ -21,30 +21,32 @@ stats:
webRoutes: 16
components: 10
dbTables: 7
testFiles: 3
testCount: 35
testFiles: 6
testCount: 113
languages: 1
---
## Zusammenfassung
Mukke ist eine **feature-reiche Musik-App** mit vollständigem Backend (Library, Playlists, Projects, Beats, Markers, Lyrics, Export) und einer Web-App mit Audio-Editor basierend auf wavesurfer.js. Solide Basis, aber noch nicht in Produktion deployed. Hauptlücken: nur 1 Sprache, keine Rate Limiting, Mobile archiviert.
Mukke ist eine **feature-reiche Musik-App** mit vollständigem Backend (Library, Playlists, Projects, Beats, Markers, Lyrics, Export) und einer Web-App mit Audio-Editor basierend auf wavesurfer.js. Seit dem letzten Audit: Rate Limiting, DB-Indexes, Transaktionen, Input-Validierung, JWT-Auth-Fix und 78 neue Tests hinzugefügt. Verbleibende Lücken: nur 1 Sprache, kein Web-Testing, Mobile archiviert.
## Backend (85/100)
## Backend (90/100)
**Stärken:**
- 11 Module: Song, Playlist, Project, Beat, Marker, Lyrics, Export, Library, STT, Database, Health
- 8 Controller mit vollständigem CRUD
- DTOs für alle Ressourcen (SongUploadDto, MarkerDto, PlaylistDto, etc.)
- DTOs für alle Ressourcen mit class-validator (@MaxLength, @Min, @Max, @IsOptional)
- ThrottlerModule (100 req/60s) für Rate Limiting
- Export-Service: LRC, SRT, JSON Formate
- S3 Presigned URLs für Uploads/Downloads
- BPM Detection, Waveform Data
- Transaktionen für Multi-Step-Operationen (Playlist-Reorder, Song-Delete mit S3-Cleanup)
**Lücken:**
- Kein Rate Limiting (ThrottlerModule fehlt)
- Keine Admin-Endpoints
- Kein globaler Error-Filter
## Frontend (78/100)
@ -62,11 +64,13 @@ Mukke ist eine **feature-reiche Musik-App** mit vollständigem Backend (Library,
- Kein Error Boundary
- Keine Skeleton Loading States
## Database (82/100)
## Database (90/100)
**Stärken:**
- 7 Tabellen: songs, playlists, playlist_songs, projects, beats, markers, lyrics
- 7 Tabellen mit vollständigen Indexes auf allen Tabellen
- Indexes auf userId, playlistId, projectId, songId für alle relevanten Tabellen
- Composite Indexes für häufige Abfragen (userId + playlistId, etc.)
- Proper JSONB für Metadata (waveform, tags)
- Drizzle ORM mit Type Safety
- Seed-Daten vorhanden
@ -76,20 +80,20 @@ Mukke ist eine **feature-reiche Musik-App** mit vollständigem Backend (Library,
- Keine Volltextsuche-Indexes
- lyrics/lyric_lines Schema könnte optimiert werden
## Testing (45/100)
## Testing (65/100)
**Stärken:**
- 3 Service-Specs: song, playlist, library (678 LOC)
- 6 Service-Specs: song, playlist, library, beat, marker, project (113 Tests total)
- Jest Config mit 80% Threshold
- Mock Factories vorhanden
- Mock Factories für alle Entities (createMockSong, createMockPlaylist, createMockBeat, createMockMarker, createMockProject)
- Gute Abdeckung der Service-Layer-Logik
**Lücken:**
- Keine Controller-Tests
- Keine Frontend-Tests
- Keine E2E Tests
- Coverage deutlich unter Threshold
## Deployment (85/100)
@ -106,18 +110,19 @@ Mukke ist eine **feature-reiche Musik-App** mit vollständigem Backend (Library,
- Kein docker-compose.macmini.yml Eintrag
- Kein CI/CD Pipeline
## Security (68/100)
## Security (78/100)
**Stärken:**
- JwtAuthGuard auf allen Endpoints
- JwtAuthGuard auf allen Endpoints (korrekter Import aus @manacore/shared-nestjs-auth)
- CurrentUser Decorator
- ParseUUIDPipe für Input Validation
- ThrottlerModule Rate Limiting (100 req/60s)
- Input-Validierung via DTOs (@MaxLength, @Min, @Max)
- CORS konfiguriert
**Lücken:**
- **Kein Rate Limiting** - kritisch für Upload-Endpoints
- Keine GDPR-Endpoints (Admin)
- Keine File-Size Validation im Backend
@ -138,6 +143,6 @@ Mukke ist eine **feature-reiche Musik-App** mit vollständigem Backend (Library,
## Top-3 Empfehlungen
1. **Rate Limiting hinzufügen** - ThrottlerModule besonders für Upload-Endpoints kritisch
2. **i18n einrichten** - Mindestens DE + EN wie alle anderen Apps
3. **Production Deployment** - docker-compose.macmini.yml Eintrag + CI/CD Job
1. **i18n einrichten** - Mindestens DE + EN wie alle anderen Apps
2. **Production Deployment** - docker-compose.macmini.yml Eintrag + CI/CD Job
3. **Frontend-Tests** - Vitest für Web-App-Stores und kritische Komponenten

View file

@ -1,19 +1,19 @@
---
title: 'Picture: Production Readiness Audit'
description: 'AI-Bildgenerierung mit 11 Modulen, Replicate Integration, Credit-System, 5 Sprachen - deployed aber ohne Rate Limiting'
description: 'AI-Bildgenerierung mit 11 Modulen, Replicate Integration, Credit-System, 5 Sprachen - mit Rate Limiting, Webhook-Security, Transaktionen und 70 Tests'
date: 2026-03-19
app: 'picture'
author: 'Till Schneider'
tags: ['audit', 'picture', 'production-readiness', 'ai']
score: 72
score: 81
scores:
backend: 85
backend: 90
frontend: 80
database: 85
testing: 15
database: 92
testing: 55
deployment: 75
documentation: 78
security: 62
security: 80
ux: 78
status: 'production'
stats:
@ -21,22 +21,26 @@ stats:
webRoutes: 19
components: 25
dbTables: 10
testFiles: 2
testCount: 5
testFiles: 4
testCount: 70
languages: 5
---
## Zusammenfassung
Picture ist die **AI-Bildgenerations-App** mit Replicate Integration, Boards, Explore-Feed und Credit-System. Deployed auf mana.how mit 5 Sprachen, aber kritische Sicherheitslücke: kein Rate Limiting.
Picture ist die **AI-Bildgenerations-App** mit Replicate Integration, Boards, Explore-Feed und Credit-System. Deployed auf mana.how mit 5 Sprachen. Seit dem letzten Audit: Rate Limiting, Webhook-Security, DB-Indexes mit FK-Constraints, Transaktionen und 70 Tests hinzugefügt.
## Backend (85/100)
## Backend (90/100)
- 11 Module: Generate, Image, Board, BoardItem, Model, Tag, Upload, Explore, Profile, Batch, Admin
- Replicate API Integration für AI-Bildgenerierung
- CreditClientService für Monetarisierung
- S3 Storage (MinIO/Hetzner)
- **Lücke:** Kein Rate Limiting (kritisch für AI-Endpoints)
- ThrottlerModule (100 req/60s) für Rate Limiting
- Webhook X-Webhook-Secret Validierung für Replicate Callbacks
- @Min/@Max Validierung auf Dimensions, Steps, Guidance Scale in GenerateDto
- duplicateBoard und processCompletedGeneration in Transaktionen
- **Lücke:** Keine Timeouts auf externe API-Calls
## Frontend (80/100)
@ -44,21 +48,40 @@ Picture ist die **AI-Bildgenerations-App** mit Replicate Integration, Boards, Ex
- Canvas-Editor, Boards, Explore, Archive
- 5 Sprachen (DE, EN, IT, FR, ES)
- Mobile App (Expo) vorhanden
- **Lücke:** Kein PWA
- **Lücke:** Kein PWA, kein Error Boundary
## Testing (15/100)
## Database (92/100)
- Nur 2 Test-Files mit ~5 Tests
- Minimale Coverage
- 10 Tabellen mit vollständigen Indexes auf allen Tabellen
- Foreign Key Constraints mit CASCADE auf allen Relationen
- Indexes auf userId, boardId, modelId, tagId für alle relevanten Tabellen
- Composite Indexes für häufige Abfragen
- **Lücke:** Keine Volltextsuche-Indexes
## Security (62/100)
## Testing (55/100)
- Auth Guards ✓ (12 Usages)
- **KEIN Rate Limiting** - kritisch für kostenpflichtige AI-Generation
- Keine File-Size Validation
- 4 Test-Files: ImageService (40 Tests), BoardService (30 Tests) + 2 bestehende
- Mock Factories vorhanden
- Jest Config mit Pfad-Aliasing
- **Lücke:** Keine Controller-Tests, keine Frontend-Tests, keine E2E Tests
## Security (80/100)
- Auth Guards auf allen Endpoints (ManaCoreModule)
- ThrottlerModule Rate Limiting (100 req/60s)
- Webhook-Secret Validierung für Replicate Callbacks
- Input-Validierung via DTOs (@Min/@Max auf numerischen Werten)
- **Lücke:** Keine SSRF-Protection auf URLs, keine File-Size Validation
## Deployment (75/100)
- Deployed auf mana.how
- Docker Multi-Stage Build (Backend)
- Health Checks konfiguriert
- **Lücke:** Kein Web Dockerfile
## Top-3 Empfehlungen
1. **Rate Limiting SOFORT** - ThrottlerModule, besonders für /generate Endpoint
2. **Test-Suite aufbauen** - Generate/Image Service Specs
3. **Web Dockerfile** - Nur Backend containerisiert
1. **Test-Coverage erhöhen** - Controller-Tests und Frontend-Tests hinzufügen
2. **Web Dockerfile** - Nur Backend containerisiert
3. **Timeouts auf externe APIs** - Replicate API Calls brauchen Timeout-Handling

View file

@ -19,6 +19,8 @@ COPY packages/shared-errors ./packages/shared-errors
COPY packages/shared-nestjs-auth ./packages/shared-nestjs-auth
COPY packages/shared-nestjs-health ./packages/shared-nestjs-health
COPY packages/shared-nestjs-metrics ./packages/shared-nestjs-metrics
COPY packages/shared-nestjs-setup ./packages/shared-nestjs-setup
COPY packages/shared-error-tracking ./packages/shared-error-tracking
COPY packages/shared-tsconfig ./packages/shared-tsconfig
# Copy todo shared package and backend
@ -39,6 +41,9 @@ WORKDIR /app/packages/shared-nestjs-health
RUN pnpm build
WORKDIR /app/packages/shared-nestjs-metrics
COPY packages/shared-nestjs-setup ./packages/shared-nestjs-setup
COPY packages/shared-error-tracking ./packages/shared-error-tracking
RUN pnpm build
WORKDIR /app/packages/credit-operations