From 7f2b9f893b735233c1df4ed0cb8fcda96d93e22b Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 30 Mar 2026 15:02:53 +0200 Subject: [PATCH] docs(todo,calendar): document smart duration settings Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/calendar/CLAUDE.md | 9 +- .../src/content/manascore/2026-03-30-calc.md | 119 ++++++++++++++++ .../manascore/2026-03-30-citycorners.md | 117 ++++++++++++++++ .../content/manascore/2026-03-30-manavoxel.md | 122 ++++++++++++++++ .../src/content/manascore/2026-03-30-news.md | 118 ++++++++++++++++ .../manascore/2026-03-30-playground.md | 115 +++++++++++++++ .../content/manascore/2026-03-30-taktik.md | 126 +++++++++++++++++ .../src/content/manascore/2026-03-30-uload.md | 132 ++++++++++++++++++ .../content/manascore/2026-03-30-wisekeep.md | 118 ++++++++++++++++ apps/todo/CLAUDE.md | 9 +- 10 files changed, 981 insertions(+), 4 deletions(-) create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-calc.md create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-citycorners.md create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-manavoxel.md create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-news.md create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-playground.md create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-taktik.md create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-uload.md create mode 100644 apps/manacore/apps/landing/src/content/manascore/2026-03-30-wisekeep.md diff --git a/apps/calendar/CLAUDE.md b/apps/calendar/CLAUDE.md index db32d23dc..c7be7f680 100644 --- a/apps/calendar/CLAUDE.md +++ b/apps/calendar/CLAUDE.md @@ -513,9 +513,14 @@ Split multiple events with keywords (`danach`, `dann`, `und dann`, `anschließen Context inheritance: subsequent events inherit date, time, and calendar from the first event. If the first event has a duration, the next event starts where it ends. -### Duration Estimation +### Smart Duration (Auto-Estimation) -`estimateEventDuration()` in `event-estimator.ts` suggests event duration based on past events. Uses weighted similarity (calendar, title overlap, tags). Runs fully offline against IndexedDB. +Duration is **automatically applied** to new events when no explicit duration is typed. Uses `estimateEventDuration()` from `event-estimator.ts` with weighted similarity (calendar, title overlap, tags). Falls back to `defaultEventDuration` from settings. Controllable via Settings > Termin-Einstellungen: + +- **Smarte Dauer** toggle (`smartDurationEnabled`, default: on) +- **Standard-Dauer** fallback (`defaultEventDuration`, default: 60min) + +Priority: explicit duration in text > history estimate > default fallback > 1h (if disabled). Runs fully offline against IndexedDB. ### Conflict Detection diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-calc.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-calc.md new file mode 100644 index 000000000..56348c539 --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-calc.md @@ -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 diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-citycorners.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-citycorners.md new file mode 100644 index 000000000..8ab2aecd8 --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-citycorners.md @@ -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 diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-manavoxel.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-manavoxel.md new file mode 100644 index 000000000..6c711e9f6 --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-manavoxel.md @@ -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 diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-news.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-news.md new file mode 100644 index 000000000..c271e5907 --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-news.md @@ -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 diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-playground.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-playground.md new file mode 100644 index 000000000..5c6d8db63 --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-playground.md @@ -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 diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-taktik.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-taktik.md new file mode 100644 index 000000000..beb8988fa --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-taktik.md @@ -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 diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-uload.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-uload.md new file mode 100644 index 000000000..95a99ef23 --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-uload.md @@ -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 diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-30-wisekeep.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-wisekeep.md new file mode 100644 index 000000000..245d97300 --- /dev/null +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-30-wisekeep.md @@ -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 diff --git a/apps/todo/CLAUDE.md b/apps/todo/CLAUDE.md index f166f55b3..75d3baec1 100644 --- a/apps/todo/CLAUDE.md +++ b/apps/todo/CLAUDE.md @@ -251,9 +251,14 @@ Split multiple tasks with keywords (`danach`, `dann`, `und dann`, `anschließend Context inheritance: subsequent tasks inherit date, time, and project from the first task. If the first task has a duration, the next task's time is offset accordingly. -### Time Estimation +### Smart Duration (Auto-Estimation) -QuickAdd suggests a duration based on completed task history (weighted by project, labels, title similarity, priority). The suggestion appears after 500ms typing pause and can be accepted with one click. Runs fully offline against IndexedDB — no AI/API calls. +Duration is **automatically applied** to new tasks when no explicit duration is typed. The system uses history-based estimation (weighted by project, labels, title similarity, priority) with a configurable default as fallback. Controllable via Settings > Task-Verhalten: + +- **Smarte Dauer** toggle (`smartDurationEnabled`, default: on) +- **Standard-Dauer** fallback (`defaultTaskDuration`, default: 30min) + +Priority: explicit duration in text > history estimate > default fallback > none (if disabled). ## Code Style Guidelines