refactor(analytics): centralize Umami tracking via env vars and shared utility

Move Umami analytics from hardcoded script tags in app.html to
server-side injection via hooks.server.ts. Website IDs are now
managed centrally in .env.development and distributed via
generate-env.mjs as PUBLIC_UMAMI_WEBSITE_ID.

- Add @manacore/shared-utils/analytics-server with injectUmamiAnalytics()
- Add UMAMI_WEBSITE_ID_* for all 17 web apps to .env.development
- Add PUBLIC_UMAMI_WEBSITE_ID mapping in generate-env.mjs for all web apps
- Update 10 existing hooks.server.ts to use shared utility
- Create 7 new hooks.server.ts (picture, planta, presi, photos, clock,
  questions, manadeck)
- Remove hardcoded Umami scripts from all 17 app.html files
- Add missing Umami tracking to Mukke and Questions
- Add shared-utils dependency to 6 web apps that lacked it
- Update ANALYTICS.md with architecture docs and "add new app" guide

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-22 18:27:31 +01:00
parent 87516bb58a
commit e01b740dba
44 changed files with 319 additions and 52 deletions

View file

@ -92,6 +92,29 @@ STRIPE_CREDITS_1000_PRICE=price_1T1OkNAZjQCYS0ZJvc6HTfB5
# Customer Portal Configuration
STRIPE_PORTAL_CONFIG_ID=bpc_1T1PFdAZjQCYS0ZJEhF9ob7q
# ============================================
# UMAMI ANALYTICS - Website IDs per app
# ============================================
# These are the Umami website IDs for each web app.
# Register new apps at https://umami.mana.how
UMAMI_WEBSITE_ID_CHAT=1c43fd98-4767-4f89-9dc2-ebdfbd8960db
UMAMI_WEBSITE_ID_MANACORE=face76f4-2d3e-42be-b8c8-0ea03f33a462
UMAMI_WEBSITE_ID_CALENDAR=772d2510-c5bb-47e0-b490-267f2821510a
UMAMI_WEBSITE_ID_TODO=ec1bb158-d871-4bc6-bdbc-147c97b9c1c7
UMAMI_WEBSITE_ID_SKILLTREE=5de13e08-95ae-4a69-aa2a-834f985be14d
UMAMI_WEBSITE_ID_ZITARE=6a86139a-d8e2-469c-9754-1c40a70397fa
UMAMI_WEBSITE_ID_CONTACTS=d2cc0f01-9e46-4a88-a49b-a365f58b78e7
UMAMI_WEBSITE_ID_PICTURE=273f67fa-5699-40f6-b85e-7a7a0a003539
UMAMI_WEBSITE_ID_PLANTA=1e83a8a6-7fa8-4d39-9545-5c21dedbe3a2
UMAMI_WEBSITE_ID_PRESI=a1eb8d1f-a4d5-43e6-b97a-c41351fe1c6f
UMAMI_WEBSITE_ID_NUTRIPHI=33dfae72-f8e2-4aaa-8008-cbbceeaf072d
UMAMI_WEBSITE_ID_STORAGE=392ff51d-11f1-4f0c-9d55-6af1402a3ee6
UMAMI_WEBSITE_ID_PHOTOS=dc201d68-5f78-4716-a0b8-587376eca7a1
UMAMI_WEBSITE_ID_CLOCK=f893945e-fea7-4493-82ab-f04812a54bea
UMAMI_WEBSITE_ID_MUKKE=89015bbb-dc59-45b7-ad51-2a68a1391553
UMAMI_WEBSITE_ID_QUESTIONS=4940b9a8-834a-483a-8696-a3086bd531e6
UMAMI_WEBSITE_ID_MANADECK=1c1d54c4-7829-43e5-8dde-0a6db7c86ec6
# ============================================
# CHAT PROJECT
# ============================================