From aa8197beaf009207f705d2a9921c27468cf90f0f Mon Sep 17 00:00:00 2001 From: Till JS Date: Thu, 19 Mar 2026 21:21:35 +0100 Subject: [PATCH] docs(audit): update ManaCore production readiness audit from 65 to 80 Reassessed scores to reflect current state: 5 languages (was 2), onboarding wizard, 11 dashboard widgets, docker-compose.macmini.yml integration, proper mana-core-auth JWT/SSO integration. Reframed backend/database categories for aggregator pattern. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/content/audits/2026-03-19-manacore.md | 176 ++++++++++++++---- 1 file changed, 142 insertions(+), 34 deletions(-) diff --git a/apps/manacore/apps/landing/src/content/audits/2026-03-19-manacore.md b/apps/manacore/apps/landing/src/content/audits/2026-03-19-manacore.md index 0167290ab..e877c277c 100644 --- a/apps/manacore/apps/landing/src/content/audits/2026-03-19-manacore.md +++ b/apps/manacore/apps/landing/src/content/audits/2026-03-19-manacore.md @@ -1,64 +1,172 @@ --- title: 'ManaCore: Production Readiness Audit' -description: 'Multi-App Ecosystem Dashboard mit 33 Web-Routes, Mobile App, Landing Page - das Herzstück des Monorepos' +description: 'Multi-App Ecosystem Dashboard mit 25 Web-Routes, 11 Dashboard-Widgets, Onboarding, 5 Sprachen, Mobile App, Landing Page' date: 2026-03-19 app: 'manacore' author: 'Till Schneider' tags: ['audit', 'manacore', 'production-readiness', 'platform'] -score: 65 +score: 80 scores: - backend: 20 - frontend: 82 - database: 55 - testing: 0 - deployment: 78 + backend: 55 + frontend: 88 + database: 70 + testing: 12 + deployment: 90 documentation: 88 - security: 72 - ux: 75 + security: 80 + ux: 92 status: 'beta' -version: '0.2.0' +version: '0.3.0' stats: backendModules: 0 - webRoutes: 33 + webRoutes: 25 components: 35 - dbTables: 5 + dbTables: 0 testFiles: 0 testCount: 0 - languages: 2 + languages: 5 --- ## Zusammenfassung -ManaCore ist das **Herzstück des Monorepos** - das Multi-App Dashboard und die Landing Page. Kein eigenes NestJS Backend (nutzt Supabase direkt + mana-core-auth). Starkes Frontend, deployed auf Cloudflare Pages. +ManaCore ist das **Herzstück des Monorepos** - das Multi-App Ecosystem Dashboard mit Onboarding-Wizard, 11 konfigurierbaren Dashboard-Widgets, Credit-System und App-Switcher. Als **Aggregator-App** ohne eigenes Backend designt - nutzt mana-core-auth + API-Middleware zu allen Service-Backends. Starkes Frontend mit 5 Sprachen, deployed auf Mac Mini via Docker. -## Backend (20/100) +> **Hinweis:** ManaCore ist eine Aggregator-App. Backend- und Database-Scores bewerten die API-Integration und das Architektur-Pattern, nicht eigene Services. -- **Kein NestJS Backend** - nutzt Supabase SSR direkt -- Server-Side Auth via @supabase/ssr Hooks -- API Routes in SvelteKit (+server.ts) -- **Lücke:** Kein dedizierter Backend-Service +## Backend / API-Integration (55/100) -## Frontend (82/100) +**Stärken:** -- 33 Web-Routes (meiste aller Apps) -- 35 Komponenten, 6 Stores -- Multi-Tenant: Dashboard, Organizations, Teams, Apps, Settings -- Mobile App (Expo) mit Drawer + Tabs Navigation -- **PWA aktiv** - Service Worker + Offline Page +- Saubere Integration mit mana-core-auth (JWT, SSO, Token-Refresh) +- SvelteKit Server Hooks für Auth Guards (`hooks.server.ts`) +- API-Middleware-Layer für Proxy zu externen Services +- 21 API-Client-Module (Credits, Gifts, Profile, Subscriptions, API Keys, etc.) +- Health-Check-Endpoint + +**Lücken:** + +- Kein dedizierter NestJS Backend-Service (by design) +- Keine Server-Side Validation eigener Business-Logik +- Keine Rate-Limiting auf SvelteKit-Ebene + +## Frontend (88/100) + +**Stärken:** + +- 25 Web-Routes in 2 Route-Groups ((auth) + (app)) +- 35 Komponenten, 6 Svelte 5 Rune Stores (690 LOC) +- 11 Dashboard-Widgets (Calendar, Clock, Contacts, Chat, Picture, Tasks, Credits, Storage, Transactions, ManaDeck, Zitare) +- 5-Step Onboarding-Wizard (Welcome → Profile → Credits → Apps → Complete) +- App-Switcher (AppSlider) für Multi-App Navigation +- Skeleton Loading States, Error Boundaries auf Widgets +- Mobile App (Expo 54) mit Drawer + Tabs, 20 Screens, 15 Komponenten +- **PWA konfiguriert** - Service Worker + Offline Page + +**Lücken:** + +- Kein globaler Error Boundary (+error.svelte) +- Mobile App hat keine Dashboard-Widgets (nur Web) + +## Database / Daten-Integration (70/100) + +**Stärken:** + +- Sauberes Aggregator-Pattern: Daten über APIs von externen Services +- User-Daten via mana-core-auth API +- Widget-Daten von 11 verschiedenen Service-Backends +- Kein eigener DB-State = keine Sync-Probleme + +**Lücken:** + +- Keine eigene Datenbank (by design) +- Kein lokaler Cache/Offline-Speicher +- Widget-Daten nicht persistiert + +## Testing (12/100) + +**Stärken:** + +- Vitest konfiguriert mit Coverage (package.json) +- Playwright für E2E Tests eingerichtet +- @vitest/coverage-v8 und @vitest/ui installiert + +**Lücken:** + +- **0 Unit Tests** +- **0 E2E Tests** +- **0 Integration Tests** +- Testing-Infrastruktur vorhanden, aber nicht genutzt + +## Deployment (90/100) + +**Stärken:** + +- Multi-Stage Dockerfile (Node 20-alpine) +- docker-compose.macmini.yml Integration +- Health Check konfiguriert (HTTP GET /health, 30s Intervall) +- Entrypoint Scripts mit Runtime-Env-Injection +- Landing Page auf Cloudflare Pages deployed +- SvelteKit adapter-node für SSR + +**Lücken:** + +- Kein CI/CD Pipeline (GitHub Actions) +- Kein automatisiertes Deployment ## Documentation (88/100) -- 228 Zeilen CLAUDE.md - umfassend -- Landing Page mit Devlogs, Blueprints, Audits, Apps, Legal, Privacy +**Stärken:** -## Deployment (78/100) +- 229 Zeilen CLAUDE.md - umfassend +- Landing Page mit Devlogs, Audits, Apps, Legal, Privacy +- Store-Dateien mit JSDoc-Kommentaren +- README.md mit 322 Zeilen -- Landing deployed auf Cloudflare Pages -- Web Dockerfile vorhanden -- **Lücke:** Kein docker-compose.macmini.yml für Dashboard +**Lücken:** + +- Keine Komponenten-API-Dokumentation +- Keine Architecture Decision Records + +## Security (80/100) + +**Stärken:** + +- Proper JWT Integration via @manacore/shared-auth +- Token-Manager mit Auto-Refresh +- Cross-Domain SSO via shared Session Cookies (.mana.how) +- Route Guards in hooks.server.ts +- Bearer Tokens auf allen API Calls +- Server-Side Proxies (Backend-URLs nicht exponiert) + +**Lücken:** + +- Kein Audit-Logging +- Keine explizite CSRF-Protection (SvelteKit Default) +- Kein Rate-Limiting + +## UX (92/100) + +**Stärken:** + +- 5 Sprachen (DE, EN, FR, ES, IT) via svelte-i18n +- Onboarding-Wizard für neue User (5 Steps) +- 11 konfigurierbare Dashboard-Widgets mit Skeleton Loading +- Theme-System (Light/Dark/System) mit persistenter Präferenz +- App-Switcher für nahtlose Multi-App Navigation +- Profil-Management (Edit, Passwort, 2FA, QR-Export) +- Organizations & Teams Verwaltung +- Credit-System (Saldo, Transfer, Geschenke) +- Responsive Design (Mobile, Tablet, Desktop) +- ARIA Labels, Dialog Roles, semantisches HTML +- Keyboard Navigation + +**Lücken:** + +- PWA Offline-Modus nicht verifiziert +- Mobile App simpler als Web (keine Widgets) ## Top-3 Empfehlungen -1. **Tests** - Auth Flow E2E Tests, Multi-Tenant Routing Tests -2. **Dashboard Deployment** - Web-App auf mana.how deployen -3. **i18n erweitern** - Nur 2 Sprachen aktuell +1. **Tests schreiben** - Auth Store Unit Tests, Dashboard Widget Tests, E2E für Login/Onboarding Flow → Testing von 12 auf 50+ +2. **Error Tracking** - GlitchTip Integration (wie andere Backends) für Production Monitoring +3. **PWA verifizieren** - Offline-Modus testen, Service Worker prüfen, Manifest validieren