docs(todo,calendar): document smart duration settings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-30 15:02:53 +02:00
parent 4cee74e15d
commit 7f2b9f893b
10 changed files with 981 additions and 4 deletions

View file

@ -0,0 +1,119 @@
---
title: 'Calc: Production Readiness Audit'
description: 'Taschenrechner mit 8 Modi (Standard, Scientific, Programmer, Converter, Currency, Finance, Date, Percentage), 5 Skins, lokaler Berechnungshistorie und Formelspeicher - vollständig local-first mit Sync'
date: 2026-03-30
app: 'calc'
author: 'Claude Code'
tags: ['audit', 'calc', 'production-readiness', 'alpha']
score: 45
scores:
backend: 5
frontend: 65
database: 55
testing: 0
deployment: 35
documentation: 25
security: 50
ux: 75
status: 'alpha'
version: '1.0.0'
stats:
backendModules: 0
webRoutes: 22
components: 6
dbTables: 2
testFiles: 0
testCount: 0
languages: 2
linesOfCode: 6100
sourceFiles: 112
sizeInMb: 0.3
commits: 0
contributors: 2
firstCommitDate: '2026-03-01'
todoCount: 0
apiEndpoints: 1
stores: 8
maxFileLines: 262
---
## Zusammenfassung
Calc ist ein **feature-reicher Taschenrechner** mit 8 Berechnungsmodi, 5 visuellen Skins (HP-35, Casio fx, TI-84, Modern, Minimal) und 10 Unit-Converter-Kategorien. Voll local-first mit Dexie.js, Sync-Support und PWA. Keine Tests und keine formale Dokumentation vorhanden.
## Backend (5/100)
- Kein eigenes Backend
- Nur Health-Check Endpoint (`GET /health`)
- Alle Berechnungen clientseitig (sicherer Expression-Parser ohne eval())
- Datenpersistenz über local-first/mana-sync
- **Designentscheidung:** Kein Backend nötig - reine Client-App
## Frontend (65/100)
- SvelteKit 2 + Svelte 5 Runes
- Tailwind CSS 4 mit shared-tailwind Theme
- 22 Routes: Standard, Scientific, Programmer, Converter, Currency, Finance, Date, Percentage, Skins, Themes, Settings, Profile, etc.
- 6 Komponenten (5 Calculator Skins + Loading Skeleton)
- 8 Svelte 5 Rune Stores
- Sicherer Math-Expression-Parser (kein eval())
- Wissenschaftliche Konstanten (π, e, φ, √2, c, g, Avogadro, Planck)
- i18n mit svelte-i18n (DE + EN)
- PWA mit @vite-pwa/sveltekit
- **Lücke:** Keine CLAUDE.md, kein Error Boundary
## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- 2 Collections: calculations, savedFormulas
- Live Queries für reaktive Updates
- Sync-fähig über mana-sync
- Guest Seed Data für Offline-First
- **Lücke:** Keine serverseitige Datenbank (by design)
## Testing (0/100)
- Keine Unit Tests
- Keine E2E Tests
- Keine Mock Factories
- Vitest nicht konfiguriert
- **Nächster Schritt:** Expression-Parser-Tests, Converter-Tests, Skin-Rendering-Tests
## Security (50/100)
- Mana Core Auth Integration (Better Auth + EdDSA JWT)
- Guest Mode unterstützt
- Sicherer Expression-Parser (kein eval(), manuelles Parsing)
- CSP Headers konfiguriert
- **Lücke:** Kein Rate Limiting (kein Backend)
## Deployment (35/100)
- Dockerfile vorhanden (Multi-Stage, node:20-alpine, Port 5026)
- Health Check konfiguriert
- **Lücke:** Nicht in docker-compose.macmini.yml, nicht deployed
## Documentation (25/100)
- Keine CLAUDE.md
- Keine README.md
- Code gut kommentiert (Headers, Inline-Docs)
- package.json Scripts vorhanden
- **Nächster Schritt:** CLAUDE.md mit Architektur, Modi-Übersicht, Skin-System
## UX (75/100)
- 8 Berechnungsmodi (Standard bis Finance)
- 5 historische Skins (HP-35 1972, Casio fx 1985, TI-84 2004, Modern, Minimal)
- 10 Unit-Converter-Kategorien (Länge, Gewicht, Temperatur, Volumen, Fläche, etc.)
- Berechnungshistorie mit Tags
- Formelspeicher
- Dark/Light Mode
- PWA installierbar
- **Lücke:** Keine Keyboard Shortcuts, keine Animationen
## Top-3 Empfehlungen
1. **Tests schreiben** - Expression-Parser und Converter sind kritisch und gut testbar
2. **CLAUDE.md erstellen** - Architektur, Modi, Skin-System dokumentieren
3. **Docker Compose** - In docker-compose.macmini.yml aufnehmen und deployen

View file

@ -0,0 +1,117 @@
---
title: 'CityCorners: Production Readiness Audit'
description: 'Stadtführer für Konstanz mit Leaflet-Maps, Marker-Clustering, Nominatim-Geocoding, 11 Standort-Kategorien und Favoriten - local-first mit Sync und Docker-Deployment'
date: 2026-03-30
app: 'citycorners'
author: 'Claude Code'
tags: ['audit', 'citycorners', 'production-readiness', 'alpha']
score: 48
scores:
backend: 5
frontend: 60
database: 55
testing: 10
deployment: 65
documentation: 55
security: 45
ux: 65
status: 'alpha'
version: '1.0.0'
stats:
backendModules: 0
webRoutes: 27
components: 27
dbTables: 3
testFiles: 2
testCount: 5
languages: 2
linesOfCode: 5342
sourceFiles: 48
sizeInMb: 0.3
commits: 0
contributors: 2
firstCommitDate: '2026-03-01'
todoCount: 0
apiEndpoints: 1
stores: 4
maxFileLines: 300
---
## Zusammenfassung
CityCorners ist ein **Stadtführer** mit interaktiven Leaflet-Karten, Marker-Clustering, Nominatim-Geocoding und 11 Standort-Kategorien. Voll local-first mit Dexie.js und mana-sync. Docker-Deployment konfiguriert und in docker-compose.macmini.yml. Minimale Testabdeckung (2 Dateien).
## Backend (5/100)
- Kein eigenes Backend
- Nur Health-Check Endpoint (`GET /health`)
- Alle Daten über local-first/mana-sync
- Geocoding über externes Nominatim API
- **Designentscheidung:** Frontend-only mit Sync-Backend
## Frontend (60/100)
- SvelteKit 2 + Svelte 5 Runes
- Tailwind CSS 4
- Leaflet 1.9 mit Marker-Clustering
- 27 Routes: Städte, Standorte, Karten, Favoriten, Suche, Auth, Settings
- 4 Svelte 5 Rune Stores (auth, favorites, tags, theme)
- 13 Library-Module (API-Helper, i18n, Dexie, Seed Data)
- i18n mit svelte-i18n (DE + EN)
- PWA-Manifest konfiguriert
- **Lücke:** Keine Skeleton-Loader, begrenzte Offline-Map-Tiles
## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- 3 Collections: cities (slug/country/name), locations (cityId/category/name), favorites (locationId)
- Live Queries mit Dexie liveQuery
- Sync über mana-sync WebSocket
- Guest Seed Data (Konstanz, Zürich, Berlin)
- **Lücke:** Keine serverseitige Datenbank (by design)
## Testing (10/100)
- 2 Testdateien (api.test.ts, help/index.test.ts)
- Vitest 4.1 konfiguriert
- ~5% Coverage geschätzt
- **Lücke:** Keine Komponenten-Tests, keine E2E Tests, keine Map-Tests
## Security (45/100)
- Mana Core Auth Integration (JWT)
- Guest Mode mit Seed Data
- Creator-only Edit Protection
- **Lücke:** Nicht in trustedOrigins registriert, kein Rate Limiting
## Deployment (65/100)
- Dockerfile vorhanden (Multi-Stage, node:20-alpine, Port 5022)
- Health Check (GET /health, 30s Intervall)
- In docker-compose.macmini.yml (128m Memory Limit)
- Depends on: mana-auth, mana-core-sync
- **Lücke:** Kein CI/CD, kein Error Monitoring
## Documentation (55/100)
- CLAUDE.md vorhanden (4.4 KB, umfassend)
- Architektur, Tech Stack, Datenmodell, Routes dokumentiert
- Features und Kategorien beschrieben
- Docker-Config und Env Vars dokumentiert
- **Lücke:** Keine API-Docs, kein Deployment-Guide
## UX (65/100)
- Interaktive Leaflet-Karten mit Marker-Clustering
- 11 Standort-Kategorien (Sight, Restaurant, Café, Museum, Park, etc.)
- Farbcodierte Marker pro Kategorie
- Suche und Filterung nach Stadt/Standort/Kategorie
- Favoriten (Auth-gated)
- Dark/Light Mode
- **Lücke:** Keine Offline-Map-Tiles, keine Routing/Navigation, keine Bilder
## Top-3 Empfehlungen
1. **Tests erweitern** - Map-Interaktionen, Geocoding-Mock, E2E für Standort-CRUD
2. **Offline-Maps** - Tile-Caching für echte Offline-Nutzung
3. **Bilder** - Standortfotos über MinIO/shared-storage integrieren

View file

@ -0,0 +1,122 @@
---
title: 'ManaVoxel: Production Readiness Audit'
description: 'Voxel/Pixel-Spiel mit PixiJS-Engine, Behavior-System, NPC-AI, Licht/Day-Night, Sprite-Animation, Dialog-System — local-first mit umfassender Game-Engine'
date: 2026-03-30
app: 'manavoxel'
author: 'Claude Code'
tags: ['audit', 'manavoxel', 'production-readiness', 'alpha']
score: 48
scores:
backend: 5
frontend: 65
database: 55
testing: 0
deployment: 30
documentation: 65
security: 30
ux: 70
status: 'alpha'
version: '2.0.0'
stats:
backendModules: 0
webRoutes: 3
components: 5
dbTables: 4
testFiles: 0
testCount: 0
languages: 0
linesOfCode: 7500
sourceFiles: 35
sizeInMb: 0.3
commits: 0
contributors: 2
firstCommitDate: '2026-01-01'
todoCount: 0
apiEndpoints: 1
stores: 0
maxFileLines: 500
---
## Zusammenfassung
ManaVoxel ist ein **2D Top-Down Pixel-Plattform** mit vollständiger Game-Engine: PixiJS-Rendering, Behavior-System (10 Trigger, 11 Actions), NPC-AI (4 Typen mit Patrol/Chase/Attack), Licht-System mit Day/Night-Cycle, Sprite-Animation, Dialog-System und Sound. Local-first mit Dexie.js und Auto-Save. Deutlicher Sprung vom Prototype zum spielbaren Alpha.
## Backend (5/100)
- Kein eigenes Backend
- Health-Check Endpoint (`GET /health`)
- Alle Daten über local-first/mana-sync
- **Designentscheidung:** Pure Client-Side SPA, Multiplayer-Protokoll definiert aber nicht implementiert
## Frontend (65/100)
- SvelteKit 2 + Svelte 5 Runes, SSR deaktiviert
- PixiJS 8 WebGL-Engine mit Chunk-basiertem Tilemap-Rendering
- 3 Routes: Game, Worlds, Health
- 5 Komponenten: Inventory, PropertyPanel, TriggerEditor, SpriteEditor (mit Frame-Support), Dialog-UI
- **Game-Engine Module (12 Dateien):**
- game.ts, tilemap.ts, camera.ts, player.ts, input.ts
- particles.ts (8 Presets), area-manager.ts (Portale, Floors)
- behavior.ts (EventBus + Runtime + 11 Action-Executors)
- audio.ts (8 synthetisierte Web Audio Sounds)
- npc.ts (NPC-Klasse + AI + NPCManager)
- lighting.ts (Darkness-Overlay + Day/Night Cycle)
- dialog.ts (NPC-Dialog + Merchant-Templates)
- PWA mit @vite-pwa/sveltekit
- **Lücke:** Keine i18n, kein Error Tracking
## Database (55/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- 4 Collections: worlds, areas, items, inventories
- Item-Persistenz: Sprites, Properties, Behaviors in IndexedDB
- Inventory-Persistenz: Slot-Zuweisungen pro Player
- Area Auto-Save: Pixel-Daten alle 10s, Entities bei Änderung
- Guest Seed Data (Demo-Village + House)
- **Lücke:** Keine serverseitige Datenbank
## Testing (0/100)
- Keine Tests
- Vitest konfiguriert aber leer
- **Nächster Schritt:** Engine-Tests (Camera, Tilemap, Behavior-Runtime, NPC-AI)
## Security (30/100)
- Auth-Dependencies deklariert
- Guest Mode als primärer Pfad
- Health Endpoint für Docker
- **Lücke:** Kein Auth-Gate, keine geschützten Routes
## Deployment (30/100)
- Dockerfile vorhanden (Multi-Stage, node:20-alpine, Port 5028)
- Health Check konfiguriert
- Nicht in docker-compose
- **Lücke:** Nicht deployed
## Documentation (65/100)
- CLAUDE.md sehr umfassend (Architektur, alle Systeme dokumentiert)
- Engine-Module, Behavior-System, NPC-System, Lighting, Dialog beschrieben
- Controls-Tabelle, Data Model, Key Patterns
- **Lücke:** Keine README, keine API-Docs
## UX (70/100)
- **Editor:** Brush/Eraser/Fill/Pipette, Undo/Redo, NPC-Platzierung (4 Typen)
- **Sprite-Editor:** 24-Farben-Palette, Mirror H/V, Multi-Frame Animation, Play/Stop
- **Gameplay:** WASD-Movement, Item-Use mit Partikel/Sound/Terrain-Destruction
- **NPCs:** 4 Typen mit AI (Patrol/Chase/Attack), HP-Bars, Kampf-System
- **Lighting:** Emissive Materials leuchten, Interiors dunkel, Day/Night auf Streets
- **Dialog:** NPC-Interaktion per E-Taste, Dialog-Optionen, Merchant-Grundlage
- **Sound:** 8 synthetisierte Presets (hit, sword, explosion, heal, whoosh, pickup, break, magic)
- **Items:** Properties wirksam (Damage, Range, Speed, Durability, Element), Behaviors programmierbar
- 5 World-Templates, Portal-System, Floor-Switching
- **Lücke:** Kein Tutorial, keine Minimap, kein Multiplayer
## Top-3 Empfehlungen
1. **Tests schreiben** - Behavior-Runtime, NPC-AI, Tilemap-Export/Import
2. **Multiplayer** - WebSocket-Server mit definierten Message-Types
3. **Trading-UI** - Merchant-Handel mit Item-Tausch fertigstellen

View file

@ -0,0 +1,118 @@
---
title: 'News: Production Readiness Audit'
description: 'AI-News-Reader mit Hono/Bun-Server, Mozilla Readability Content-Extraction, Feed-System und Artikel-Archiv - local-first mit minimaler UI'
date: 2026-03-30
app: 'news'
author: 'Claude Code'
tags: ['audit', 'news', 'production-readiness', 'alpha']
score: 35
scores:
backend: 45
frontend: 35
database: 50
testing: 0
deployment: 15
documentation: 50
security: 45
ux: 35
status: 'alpha'
version: '1.0.0'
stats:
backendModules: 3
webRoutes: 7
components: 1
dbTables: 2
testFiles: 0
testCount: 0
languages: 1
linesOfCode: 1929
sourceFiles: 38
sizeInMb: 0.1
commits: 0
contributors: 2
firstCommitDate: '2026-03-01'
todoCount: 0
apiEndpoints: 5
stores: 1
maxFileLines: 200
---
## Zusammenfassung
News ist ein **AI-News-Reader** mit Content-Extraction via Mozilla Readability, Feed-System und Artikel-Archiv. Hono/Bun-Server mit 5 Endpoints. Local-first mit 2 Dexie-Collections. Sehr schlanke Codebasis (1.929 LOC), aber minimale UI und keine Tests oder Docker-Setup.
## Backend (45/100)
- Hono/Bun Microservice (Port 3071)
- 5 API Endpoints:
- `GET /health` - Health Check
- `GET /api/v1/feed` - Artikel-Feed mit Typ/Kategorie-Filter
- `GET /api/v1/feed/:id` - Einzelner Artikel
- `POST /api/v1/extract/preview` - URL Content-Extraction Preview
- `POST /api/v1/extract/save` - Extract + Speichern (JWT)
- Mozilla Readability + JSDOM für Content-Parsing
- Auto-generierte Lesezeit (Wörter ÷ 200)
- CORS, JWT-Middleware, Error-Handling
- **Lücke:** Kein Caching, kein Rate Limiting
## Frontend (35/100)
- SvelteKit 2 + Svelte 5 Runes
- Tailwind CSS 4
- 7 Routes: Home, Feed, Saved, Login, Register, Layouts
- 1 Custom Component (NewsLogo)
- 1 Store (auth.svelte.ts)
- Hardcoded German Labels
- **Lücke:** Keine i18n-Framework, minimale UI, nur 1 Custom Component
## Database (50/100)
- IndexedDB via Dexie.js (local-first)
- PostgreSQL über mana-sync (sync_changes)
- 2 Collections: articles (type/sourceOrigin/isArchived/categoryId), categories (slug/order)
- Hybrid-Modell: AI-Feed vom Server, Saved Artikel local-first
- Guest Seed Data
- **Lücke:** Drizzle ORM im Server deklariert aber kaum genutzt
## Testing (0/100)
- Keine Tests
- Kein Test-Framework konfiguriert
- **Kritisch:** Content-Extraction ist fehleranfällig und braucht Tests
## Security (45/100)
- JWT-Auth auf /api/v1/extract/save
- Mana Core Auth Integration
- Guest Mode unterstützt
- **Lücke:** Public Endpoints ohne Rate Limiting, kein Input-Sanitizing bei URL-Extraction
## Deployment (15/100)
- Kein Dockerfile
- Nicht in docker-compose
- Nicht deployed
- **Kritisch:** Deployment-Infrastruktur fehlt komplett
## Documentation (50/100)
- CLAUDE.md vorhanden
- Architektur-Diagramm
- Hono Routes dokumentiert
- Local-first Collections beschrieben
- Dev Commands vorhanden
- **Lücke:** Keine README, keine API-Docs
## UX (35/100)
- Feed-Ansicht mit Typ-Filter (News, Summaries, In-Depth)
- Kategorie-Filterung
- Artikel speichern
- Astro Landing Page (minimal)
- **Lücke:** Keine Suche, kein Reader-Modus, kein Offline-Lesen, minimales Styling
## Top-3 Empfehlungen
1. **Dockerfile erstellen** - Bun-Server + SvelteKit containerisieren
2. **Content-Extraction testen** - Readability-Parser mit verschiedenen Websites testen
3. **UI ausbauen** - Reader-Modus, Suche, bessere Artikel-Karten

View file

@ -0,0 +1,115 @@
---
title: 'Playground: Production Readiness Audit'
description: 'LLM-Playground mit Streaming-Chat, Model-Comparison (bis 4 Modelle parallel), Parameter-Tuning und Modality-Filter - pure Frontend-App ohne Datenpersistenz'
date: 2026-03-30
app: 'playground'
author: 'Claude Code'
tags: ['audit', 'playground', 'production-readiness', 'alpha']
score: 38
scores:
backend: 10
frontend: 60
database: 5
testing: 0
deployment: 60
documentation: 10
security: 50
ux: 65
status: 'alpha'
version: '1.0.0'
stats:
backendModules: 0
webRoutes: 7
components: 12
dbTables: 0
testFiles: 0
testCount: 0
languages: 1
linesOfCode: 1861
sourceFiles: 28
sizeInMb: 0.1
commits: 0
contributors: 2
firstCommitDate: '2026-01-01'
todoCount: 0
apiEndpoints: 0
stores: 5
maxFileLines: 205
---
## Zusammenfassung
Playground ist ein **LLM-Playground** zum Testen verschiedener Sprachmodelle mit Streaming-Chat, Model-Comparison (bis 4 Modelle parallel) und Parameter-Tuning. Pure Frontend-App die externe mana-llm API konsumiert. Kein eigenes Backend, keine Datenpersistenz, keine Tests, keine Dokumentation.
## Backend (10/100)
- Kein eigenes Backend
- Konsumiert externe mana-llm API (`/v1/chat/completions`, `/v1/models`)
- Health-Check Endpoint vorhanden
- **Designentscheidung:** Stateless Frontend, LLM-Logik im mana-llm Service
## Frontend (60/100)
- SvelteKit 2 + Svelte 5 Runes
- Tailwind CSS 4
- Vite 7.1
- 7 Routes: Playground (protected), Login, Register, Health, Layouts
- 12 Komponenten: Header, Sidebar, ChatInput, MessageBubble, MessageList, ModelSelector, ParameterPanel, SystemPromptEditor, ModelComparisonSelector, ModelModalityFilter, ComparisonResponseCard, ComparisonMessageBubble
- 5 Stores (auth, chat, comparison, models, settings)
- AsyncGenerator-basiertes Streaming
- AbortController für Stop-Funktion
- JSON-Export für Konversationen
- **Lücke:** Hardcoded German, keine i18n
## Database (5/100)
- Keine Datenpersistenz
- Chat-History nur im Speicher (verloren bei Refresh)
- Keine IndexedDB, kein localStorage
- **Lücke:** Konversationen gehen verloren
## Testing (0/100)
- Keine Tests
- Kein Test-Framework konfiguriert
- **Nächster Schritt:** Streaming-Parser, Model-Comparison-Logik testen
## Security (50/100)
- Mana Core Auth Integration (Better Auth + JWT)
- Protected Routes mit Auth Guard
- Passkey + 2FA Support
- CORS-aware URL Handling
- **Lücke:** Kein Rate Limiting (LLM API ist teuer)
## Deployment (60/100)
- Dockerfile vorhanden (Multi-Stage, node:20-alpine, Port 5026)
- Health Check konfiguriert
- In docker-compose.macmini.yml (llm-playground)
- **Lücke:** Kein CI/CD, kein Error Monitoring
## Documentation (10/100)
- Keine CLAUDE.md
- Keine README.md
- Keine API-Docs
- **Kritisch:** Keine Dokumentation vorhanden
## UX (65/100)
- Streaming-Chat mit Echtzeit-Ausgabe
- Model-Comparison: bis 4 Modelle parallel
- Echtzeit-Metriken: Tokens/Sekunde, Dauer, Token-Counts
- Parameter-Panel: Temperature, Max Tokens, Top-P
- System Prompt Editor
- Modality-Filter (Text, Vision, Code)
- Loading States und Animationen
- JSON-Export
- **Lücke:** Keine Konversations-Persistenz, kein Prompt-Templates, kein Sharing
## Top-3 Empfehlungen
1. **CLAUDE.md erstellen** - API-Integration, Model-Config, Deployment dokumentieren
2. **Konversations-Persistenz** - IndexedDB/Dexie für Chat-History
3. **Prompt-Templates** - Vordefinierte System-Prompts für verschiedene Anwendungsfälle

View file

@ -0,0 +1,126 @@
---
title: 'Taktik: Production Readiness Audit'
description: 'Zeiterfassung mit Live-Timer, Projekten, Kunden, Reports, CSV-Export, Templates und Abrechnungsraten - local-first mit umfassender Dokumentation und solider Testabdeckung'
date: 2026-03-30
app: 'taktik'
author: 'Claude Code'
tags: ['audit', 'taktik', 'production-readiness', 'beta']
score: 55
scores:
backend: 5
frontend: 70
database: 60
testing: 40
deployment: 45
documentation: 75
security: 50
ux: 80
status: 'beta'
version: '1.0.0'
stats:
backendModules: 0
webRoutes: 20
components: 8
dbTables: 6
testFiles: 4
testCount: 30
languages: 2
linesOfCode: 5559
sourceFiles: 45
sizeInMb: 0.3
commits: 0
contributors: 2
firstCommitDate: '2026-03-01'
todoCount: 0
apiEndpoints: 1
stores: 6
maxFileLines: 350
---
## Zusammenfassung
Taktik ist eine **vollwertige Zeiterfassung** mit Live-Timer, Projekt-/Kunden-Management, Reports mit Charts, CSV-Export und konfigurierbaren Abrechnungsraten. Local-first mit 6 Dexie-Collections, 4 Testdateien und umfassender CLAUDE.md. Feature-komplett für den Produktiveinsatz.
## Backend (5/100)
- Kein eigenes Backend
- Nur Health-Check Endpoint (`GET /health`)
- Alle Daten über local-first/mana-sync
- **Designentscheidung:** Frontend-only mit Sync, geplante Guild-Integration in v2
## Frontend (70/100)
- SvelteKit 2 + Svelte 5 Runes
- Tailwind CSS 4
- 20 Routes: Timer, Einträge, Projekte, Kunden, Reports, Templates, Settings
- 8 Komponenten (TimerCard, TimerIndicator, EntryItem/List/Form, QuickStart, KeyboardShortcuts, ConfirmDialog)
- 6 Svelte 5 Rune Stores (auth, timer, view, user-settings, theme, navigation)
- i18n mit svelte-i18n (DE + EN)
- PWA mit Shortcuts ("Timer starten", "Neuer Eintrag")
- 3 Keyboard Shortcuts (s=Start/Stop, n=Neuer Eintrag, Esc=Schließen)
- **Lücke:** Keine Skeleton-Loader, keine Drag-Reorder
## Database (60/100)
- IndexedDB via Dexie.js (@manacore/local-store)
- 6 Collections: clients, projects, timeEntries, tags, templates, settings
- Compound-Indizes (date+projectId)
- Live Queries mit useLiveQueryWithDefault()
- Auto-Save alle 10 Sekunden
- Guest Seed Data (2 Kunden, 3 Projekte, 5 Demo-Einträge)
- **Lücke:** Keine serverseitige Validierung
## Testing (40/100)
- 4 Testdateien (~1.800 LOC):
- queries.test.ts (Query-Logik)
- types.test.ts (Typ-Validierung)
- export.test.ts (CSV-Export)
- rounding.test.ts (Rundungslogik)
- Vitest konfiguriert
- Kernlogik gut abgedeckt
- **Lücke:** Keine Komponenten-Tests, keine E2E Tests
## Security (50/100)
- Mana Core Auth Integration (Better Auth + JWT)
- Guest Mode mit AuthGate
- Multi-User via Sync Engine
- **Lücke:** Nicht in trustedOrigins, keine Input-Validierung (kein Backend)
## Deployment (45/100)
- Dockerfile vorhanden (Multi-Stage, node:20-alpine, Port 5027)
- Health Check konfiguriert
- **Lücke:** Nicht in docker-compose.macmini.yml, nicht deployed
## Documentation (75/100)
- CLAUDE.md vorhanden (8.5 KB, sehr umfassend)
- Architektur-Diagramme (Timer-Flow, Data-Flow)
- Feature-Liste mit Beispielen
- Datenmodell-Schema dokumentiert
- Projektstruktur mit Directory Tree
- Geplante v2 Features (Guild-Integration)
- **Lücke:** Keine API-Docs (kein Backend)
## UX (80/100)
- Live HH:MM:SS Timer mit 1s Tick
- One-Click Start/Stop mit Keyboard Shortcut
- Timer-Indicator in Navbar (sichtbar auf allen Seiten)
- Quick-Start aus Templates oder letzten Einträgen
- Inline-Expand Editing mit Auto-Save
- Tag-Gruppierung mit Tagessummen
- CSV-Export (Semikolon, UTF-8 BOM für Excel)
- Farbcodierte Projektkarten mit Budget-Fortschrittsbalken
- Reports mit Charts (Billable vs Non-Billable, Stunden pro Projekt/Tag)
- Konfigurierbare Rundung (0/1/5/6/10/15 min, Up/Down/Nearest)
- Mehrere Währungen (EUR, CHF, USD, GBP)
- **Lücke:** Keine Drag-Reorder für Projekte, keine Kalenderansicht
## Top-3 Empfehlungen
1. **Docker Compose** - In docker-compose.macmini.yml aufnehmen und deployen
2. **E2E Tests** - Timer-Flow, Eintrag-CRUD, CSV-Export testen
3. **Kalenderansicht** - Wochenansicht mit Zeitblöcken für bessere Übersicht

View file

@ -0,0 +1,132 @@
---
title: 'uLoad: Production Readiness Audit'
description: 'URL-Shortener mit Hono/Bun-Server, Click-Analytics, QR-Codes, Public Profiles, UTM-Tracking und Stripe-Stubs - live auf ulo.ad mit Docker-Deployment'
date: 2026-03-30
app: 'uload'
author: 'Claude Code'
tags: ['audit', 'uload', 'production-readiness', 'beta']
score: 58
scores:
backend: 60
frontend: 60
database: 60
testing: 0
deployment: 75
documentation: 70
security: 55
ux: 65
status: 'beta'
version: '1.0.0'
stats:
backendModules: 6
webRoutes: 16
components: 16
dbTables: 4
testFiles: 0
testCount: 0
languages: 2
linesOfCode: 4190
sourceFiles: 114
sizeInMb: 0.3
commits: 0
contributors: 2
firstCommitDate: '2026-01-01'
todoCount: 0
apiEndpoints: 12
stores: 2
maxFileLines: 300
---
## Zusammenfassung
uLoad ist ein **URL-Shortener und Link-Management-Tool** mit eigenem Hono/Bun-Server, Click-Analytics (Timeline, Devices, Referrers, Countries), QR-Code-Generierung und Public User Profiles. **Live auf ulo.ad** mit Docker-Deployment auf Hetzner VPS. Keine Tests vorhanden.
## Backend (60/100)
- Hono/Bun Microservice (Port 3041)
- 12 API Endpoints:
- `GET /r/:code` - Redirect + Click-Tracking
- `GET /public/u/:username` - Public User Profile
- `GET /api/v1/analytics/:linkId` - Click-Statistiken
- `GET /api/v1/analytics/:linkId/timeline` - Clicks über Zeit
- `GET /api/v1/analytics/:linkId/devices` - Geräte-Breakdown
- `GET /api/v1/analytics/:linkId/referrers` - Top-Referrer
- `GET /api/v1/analytics/:linkId/countries` - Länder-Breakdown
- `POST /api/v1/stripe/checkout` - Stripe Session (Stub)
- `POST /api/v1/stripe/webhook` - Stripe Webhook (Stub)
- `POST /api/v1/email/send-invitation` - Team-Einladung (Stub)
- JWT-Auth auf geschützten Endpoints
- **Lücke:** Stripe und Email sind Stubs
## Frontend (60/100)
- SvelteKit 2 + Svelte 5 Runes
- Tailwind CSS 4
- 16 Routes: Links, Tags, Analytics, Pricing, Settings, Public Profile, Auth
- 2 Stores (authStore, uloadStore)
- QR-Code-Generierung
- UTM-Parameter-Builder
- Bulk-Operationen
- i18n mit svelte-i18n (DE + EN)
- **Lücke:** Wenige Custom-Komponenten, keine Skeleton-Loader
## Database (60/100)
- IndexedDB via Dexie.js (local-first)
- PostgreSQL via Drizzle ORM (Server)
- 4 Collections: links, tags, folders, linkTags
- Compound-Indizes für Performance
- Sync über mana-sync
- Guest Seed Data
- **Lücke:** Keine Migrations-Docs
## Testing (0/100)
- Keine Unit Tests
- Keine E2E Tests
- Keine Testinfrastruktur
- **Kritisch:** Analytics und Redirect sind geschäftskritisch und ungetestet
## Security (55/100)
- JWT-Auth auf Server-Endpoints
- Mana Core Auth Integration
- Guest Mode unterstützt
- Passwort-geschützte Links
- Max-Click-Limits und Expiration
- CORS konfiguriert
- **Lücke:** Rate Limiting unklar, Stripe-Webhooks nicht validiert (Stub)
## Deployment (75/100)
- 2 Dockerfiles (Web: node:20-alpine Port 5029, Server: oven/bun Port 3041)
- In docker-compose.macmini.yml (uload-web 128m, uload-server 256m)
- Health Checks auf beiden Services
- **Live auf ulo.ad** (Coolify, Hetzner CX21)
- CORS für ulo.ad und uload.mana.how
- **Lücke:** Kein CI/CD, kein Error Monitoring
## Documentation (70/100)
- CLAUDE.md vorhanden (129 Zeilen, umfassend)
- README.md vorhanden (152 Zeilen)
- Deployment-Docs: DEPLOYMENT.md, LESSONS_LEARNED.md, DOMAIN_SETUP.md, COOLIFY_SETUP.md
- Architektur, Routes, Collections dokumentiert
- **Lücke:** Keine API-Docs für Analytics-Endpoints
## UX (65/100)
- Link-Management mit Folders und Tags
- QR-Code-Generierung
- Analytics-Dashboard pro Link (Timeline, Devices, Referrers, Countries)
- Public User Profiles (`/u/[username]`)
- Bulk-Operationen
- Passwort-Schutz + Expiration
- Keyboard Shortcuts (Cmd+1-4)
- **Lücke:** Kein Link-Preview, keine Custom Short Codes
## Top-3 Empfehlungen
1. **Tests schreiben** - Redirect-Logik, Analytics-Aggregation, Link-Validierung
2. **Stripe integrieren** - Checkout und Webhooks fertigstellen
3. **Error Monitoring** - GlitchTip/Sentry für Production-Tracking

View file

@ -0,0 +1,118 @@
---
title: 'Wisekeep: Production Readiness Audit'
description: 'AI-Transkription mit YouTube-Pipeline (yt-dlp + Groq Whisper), Playlist-Management und Transcript-Bibliothek - Hono/Bun-Server mit local-first Web-App'
date: 2026-03-30
app: 'wisekeep'
author: 'Claude Code'
tags: ['audit', 'wisekeep', 'production-readiness', 'alpha']
score: 32
scores:
backend: 40
frontend: 30
database: 50
testing: 0
deployment: 10
documentation: 40
security: 45
ux: 35
status: 'alpha'
version: '1.0.0'
stats:
backendModules: 2
webRoutes: 9
components: 1
dbTables: 2
testFiles: 0
testCount: 0
languages: 1
linesOfCode: 4889
sourceFiles: 42
sizeInMb: 0.2
commits: 0
contributors: 2
firstCommitDate: '2026-03-01'
todoCount: 0
apiEndpoints: 2
stores: 1
maxFileLines: 416
---
## Zusammenfassung
Wisekeep ist eine **AI-Transkriptions-App** mit YouTube-Video-Pipeline (yt-dlp → Audio-Extraction → Groq Whisper). Hono/Bun-Server mit 2 Endpoints. Local-first Web-App mit Transcript-Bibliothek und Playlist-Management. Umfangreiche Astro Landing Page mit Speaker-Profilen. Keine Tests, kein Docker.
## Backend (40/100)
- Hono/Bun Microservice (Port 3072)
- 2 API Endpoints:
- `GET /health` - Health Check
- `POST /api/v1/transcribe` - YouTube-Transkription (JWT)
- TranscribeService Pipeline: yt-dlp Download → mp3 Extraction → Groq Whisper
- JWT-Auth via Remote JWKS
- CORS + Error-Middleware
- Temp-File Cleanup bei Fehlern
- **Lücke:** Keine Batch-Verarbeitung, kein Retry, keine Queue
## Frontend (30/100)
- SvelteKit 2 + Svelte 5 Runes
- Tailwind CSS 4
- 9 Routes: Transcribe, Transcripts, Playlists, Login, Register, Layouts
- 1 Custom Component (WisekeepLogo)
- 1 Store (auth)
- Toast-Benachrichtigungen (svelte-sonner)
- UI hardcoded German
- **Lücke:** Minimale UI, keine i18n, kein Player, keine Suche
## Database (50/100)
- IndexedDB via Dexie.js (local-first)
- 2 Collections: transcripts (status/channel/isArchived/playlistId/language), playlists (category/order)
- Guest Seed Data (2 Playlists + 1 Demo-Transcript)
- Sync über mana-sync
- **Lücke:** Keine serverseitige Persistenz (Transkripte nur lokal)
## Testing (0/100)
- Keine Tests
- Kein Test-Framework konfiguriert
- **Kritisch:** Transkriptions-Pipeline ist komplex und fehleranfällig
## Security (45/100)
- JWT-Auth via Remote JWKS (jose)
- Mana Core Auth Integration
- Guest Mode unterstützt
- **Lücke:** Kein Rate Limiting (Whisper API ist teuer), keine URL-Validierung
## Deployment (10/100)
- Kein Dockerfile
- Nicht in docker-compose
- Nicht deployed
- Benötigt yt-dlp als System-Dependency
- **Kritisch:** yt-dlp muss im Container installiert sein
## Documentation (40/100)
- CLAUDE.md vorhanden (54 Zeilen)
- Architektur-Diagramm
- Server Routes dokumentiert
- Prerequisites genannt (yt-dlp, GROQ_API_KEY)
- **Lücke:** Keine README, kein Setup-Guide, keine API-Docs
## UX (35/100)
- YouTube-URL-Eingabe mit Sprach-Auswahl (de, en, fr, es)
- Transkript-Bibliothek mit Volltextsuche
- Archivieren/Löschen
- Expandierbare Transkript-Vorschau
- Playlist-Management mit Kategorien
- Astro Landing Page mit Speaker-Profilen (Simon Sinek, Rory Sutherland)
- **Lücke:** Kein Audio-Player, keine Timestamps, kein Export, keine Highlights
## Top-3 Empfehlungen
1. **Dockerfile erstellen** - Bun + yt-dlp im Container, Rate Limiting
2. **Audio-Player** - Transkript mit Timestamps und synchronem Audio-Playback
3. **Tests** - Transkriptions-Pipeline, URL-Validierung, Error-Handling testen