diff --git a/apps/manacore/apps/landing/src/content/config.ts b/apps/manacore/apps/landing/src/content/config.ts index e3ca1f7e6..1c9d6ef72 100644 --- a/apps/manacore/apps/landing/src/content/config.ts +++ b/apps/manacore/apps/landing/src/content/config.ts @@ -253,6 +253,16 @@ const manascoreCollection = defineCollection({ sharedLlm: z.boolean().optional(), // Uses @manacore/shared-llm (if applicable) }) .optional(), + // Analytics maturity (Umami tracking depth) + analytics: z + .object({ + pageViewTracking: z.boolean(), // Umami script injected (automatic page views) + customEvents: z.boolean(), // App-specific custom events implemented + authTracking: z.boolean(), // Login/signup/logout tracked via shared-auth + landingTracking: z.boolean(), // Landing page CTA/pricing events + publicDashboard: z.boolean(), // Public Umami dashboard configured + }) + .optional(), // Score history for trend visualization history: z .array( diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-calendar.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-calendar.md index f9b5a0958..142dc8dd2 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-calendar.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-calendar.md @@ -49,6 +49,12 @@ lighthouse: accessibility: 95 bestPractices: 96 seo: 100 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'production' version: '1.1.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-chat.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-chat.md index f5d945a16..e6071c021 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-chat.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-chat.md @@ -15,6 +15,12 @@ scores: documentation: 85 security: 82 ux: 80 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'production' version: '0.3.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-clock.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-clock.md index 4e4a9d032..340965cee 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-clock.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-clock.md @@ -15,6 +15,12 @@ scores: documentation: 10 security: 60 ux: 55 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'beta' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-contacts.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-contacts.md index 8f457a722..631892293 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-contacts.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-contacts.md @@ -15,6 +15,12 @@ scores: documentation: 92 security: 85 ux: 85 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: false + publicDashboard: true status: 'production' version: '1.0.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-context.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-context.md index 37bf97b81..b4cd4a8c5 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-context.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-context.md @@ -15,6 +15,12 @@ scores: documentation: 85 security: 68 ux: 65 +analytics: + pageViewTracking: true + customEvents: false + authTracking: true + landingTracking: false + publicDashboard: true status: 'beta' version: '0.1.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manacore.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manacore.md index 75ee21af1..8d4f6f85d 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manacore.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manacore.md @@ -15,6 +15,12 @@ scores: documentation: 88 security: 80 ux: 92 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'production' version: '0.3.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manadeck.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manadeck.md index 9d7a0b536..bd2224de9 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manadeck.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-manadeck.md @@ -15,6 +15,12 @@ scores: documentation: 25 security: 55 ux: 68 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'alpha' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-matrix.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-matrix.md index 4738bcc77..647c75cda 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-matrix.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-matrix.md @@ -15,6 +15,12 @@ scores: documentation: 92 security: 88 ux: 82 +analytics: + pageViewTracking: false + customEvents: false + authTracking: false + landingTracking: false + publicDashboard: false status: 'production' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-mukke.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-mukke.md index 64dd5ee23..1f0a63ef6 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-mukke.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-mukke.md @@ -15,6 +15,12 @@ scores: documentation: 80 security: 78 ux: 60 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'beta' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-nutriphi.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-nutriphi.md index 9167e9752..ba6bf928c 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-nutriphi.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-nutriphi.md @@ -15,6 +15,12 @@ scores: documentation: 85 security: 68 ux: 55 +analytics: + pageViewTracking: true + customEvents: false + authTracking: true + landingTracking: true + publicDashboard: true status: 'beta' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-photos.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-photos.md index 39f98cb10..ce102eccb 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-photos.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-photos.md @@ -15,6 +15,12 @@ scores: documentation: 78 security: 65 ux: 55 +analytics: + pageViewTracking: true + customEvents: false + authTracking: true + landingTracking: false + publicDashboard: true status: 'beta' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-picture.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-picture.md index a18fbe481..7887a5999 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-picture.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-picture.md @@ -15,6 +15,12 @@ scores: documentation: 78 security: 80 ux: 78 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'production' version: '0.3.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-planta.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-planta.md index f92cf955e..7e9d5f97a 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-planta.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-planta.md @@ -15,6 +15,12 @@ scores: documentation: 62 security: 55 ux: 50 +analytics: + pageViewTracking: true + customEvents: false + authTracking: true + landingTracking: false + publicDashboard: true status: 'alpha' version: '0.1.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-presi.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-presi.md index f66036a3a..9b7323280 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-presi.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-presi.md @@ -15,6 +15,12 @@ scores: documentation: 90 security: 85 ux: 82 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'mature' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-questions.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-questions.md index 4d9a75c62..67d8f3462 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-questions.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-questions.md @@ -15,6 +15,12 @@ scores: documentation: 72 security: 55 ux: 55 +analytics: + pageViewTracking: true + customEvents: false + authTracking: true + landingTracking: false + publicDashboard: true status: 'alpha' version: '0.1.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-skilltree.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-skilltree.md index 514ff643f..e417ce8e8 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-skilltree.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-skilltree.md @@ -15,6 +15,12 @@ scores: documentation: 62 security: 65 ux: 72 +analytics: + pageViewTracking: true + customEvents: false + authTracking: true + landingTracking: false + publicDashboard: true status: 'beta' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-storage.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-storage.md index 277c07f99..d06b8b07b 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-storage.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-storage.md @@ -19,6 +19,12 @@ scores: documentation: 78 security: 78 ux: 75 +analytics: + pageViewTracking: true + customEvents: false + authTracking: true + landingTracking: false + publicDashboard: true status: 'production' version: '0.6.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-todo.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-todo.md index 267373a17..592043d05 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-todo.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-todo.md @@ -49,6 +49,12 @@ lighthouse: accessibility: 93 bestPractices: 96 seo: 100 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'production' version: '1.1.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-traces.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-traces.md index b249811f7..5ddc3f04b 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-traces.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-traces.md @@ -15,6 +15,12 @@ scores: documentation: 45 security: 55 ux: 35 +analytics: + pageViewTracking: false + customEvents: false + authTracking: false + landingTracking: false + publicDashboard: false status: 'alpha' version: '0.0.1' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-zitare.md b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-zitare.md index f085b8e98..662a197db 100644 --- a/apps/manacore/apps/landing/src/content/manascore/2026-03-19-zitare.md +++ b/apps/manacore/apps/landing/src/content/manascore/2026-03-19-zitare.md @@ -15,6 +15,12 @@ scores: documentation: 20 security: 70 ux: 75 +analytics: + pageViewTracking: true + customEvents: true + authTracking: true + landingTracking: true + publicDashboard: true status: 'beta' version: '0.2.0' stats: diff --git a/apps/manacore/apps/landing/src/content/manascore/about.md b/apps/manacore/apps/landing/src/content/manascore/about.md index 01ab955df..5f31eedd0 100644 --- a/apps/manacore/apps/landing/src/content/manascore/about.md +++ b/apps/manacore/apps/landing/src/content/manascore/about.md @@ -203,6 +203,20 @@ Prüft 7 Konsistenz-Kriterien der Backend-API: | **Health Endpoint** | `/health` Endpoint vorhanden | | **Validation** | DTO-Validation mit class-validator auf allen Inputs | +### Analytics Maturity + +Bewertet die Tiefe der Umami-Analytics-Integration pro App: + +| Check | Beschreibung | +| ---------------------- | ---------------------------------------------------------------------- | +| **Page View Tracking** | Umami-Script via `hooks.server.ts` injiziert (automatische Page Views) | +| **Custom Events** | App-spezifische Events implementiert (z.B. `TodoEvents`, `ChatEvents`) | +| **Auth Tracking** | Login/Signup/Logout automatisch via `@manacore/shared-auth` getrackt | +| **Landing Tracking** | Landing Page Events (CTA-Clicks, Pricing Views) via `Analytics.astro` | +| **Public Dashboard** | Öffentliches Dashboard auf `stats.mana.how` konfiguriert | + +Apps mit allen 5 Checks sind **analytics-mature** — sie erfassen nicht nur Page Views, sondern auch Feature-spezifische Nutzerinteraktionen, Auth-Flows und Landing-Conversions. + ### Cross-App Consistency Misst wie konsequent eine App die shared Packages des Monorepos nutzt: diff --git a/apps/manacore/apps/web/src/lib/components/dashboard/WidgetContainer.svelte b/apps/manacore/apps/web/src/lib/components/dashboard/WidgetContainer.svelte index 5c41c172b..e67777cf4 100644 --- a/apps/manacore/apps/web/src/lib/components/dashboard/WidgetContainer.svelte +++ b/apps/manacore/apps/web/src/lib/components/dashboard/WidgetContainer.svelte @@ -11,6 +11,7 @@ import type { WidgetConfig, WidgetSize } from '$lib/types/dashboard'; import { getWidgetMeta } from '$lib/types/dashboard'; import { dashboardStore } from '$lib/stores/dashboard.svelte'; + import { ManaCoreEvents } from '@manacore/shared-utils/analytics'; // Widget components import CreditsWidget from './widgets/CreditsWidget.svelte'; @@ -48,9 +49,11 @@ function handleSizeChange(size: WidgetSize) { dashboardStore.updateWidgetSize(widget.id, size); + ManaCoreEvents.widgetResized(widget.type, size); } function handleRemove() { + ManaCoreEvents.widgetRemoved(widget.type); dashboardStore.removeWidget(widget.id); } diff --git a/apps/manacore/apps/web/src/lib/components/onboarding/OnboardingWizard.svelte b/apps/manacore/apps/web/src/lib/components/onboarding/OnboardingWizard.svelte index 0c2dfe7fb..7312282d0 100644 --- a/apps/manacore/apps/web/src/lib/components/onboarding/OnboardingWizard.svelte +++ b/apps/manacore/apps/web/src/lib/components/onboarding/OnboardingWizard.svelte @@ -1,5 +1,6 @@
@@ -22,7 +28,7 @@ />