mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:01:08 +02:00
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:
parent
87516bb58a
commit
e01b740dba
44 changed files with 319 additions and 52 deletions
|
|
@ -92,6 +92,29 @@ STRIPE_CREDITS_1000_PRICE=price_1T1OkNAZjQCYS0ZJvc6HTfB5
|
||||||
# Customer Portal Configuration
|
# Customer Portal Configuration
|
||||||
STRIPE_PORTAL_CONFIG_ID=bpc_1T1PFdAZjQCYS0ZJEhF9ob7q
|
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
|
# CHAT PROJECT
|
||||||
# ============================================
|
# ============================================
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Calendar</title>
|
<title>Calendar</title>
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="772d2510-c5bb-47e0-b490-267f2821510a"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
// Get client-side URLs from environment (Docker runtime)
|
// Get client-side URLs from environment (Docker runtime)
|
||||||
// In dev mode, Vite exposes .env vars via import.meta.env, not process.env
|
// In dev mode, Vite exposes .env vars via import.meta.env, not process.env
|
||||||
|
|
@ -35,7 +36,7 @@ window.__PUBLIC_STT_URL__ = "${PUBLIC_STT_URL}";
|
||||||
window.__PUBLIC_TODO_BACKEND_URL__ = "${PUBLIC_TODO_BACKEND_URL}";
|
window.__PUBLIC_TODO_BACKEND_URL__ = "${PUBLIC_TODO_BACKEND_URL}";
|
||||||
window.__PUBLIC_CONTACTS_API_URL__ = "${PUBLIC_CONTACTS_API_URL}";
|
window.__PUBLIC_CONTACTS_API_URL__ = "${PUBLIC_CONTACTS_API_URL}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="1c43fd98-4767-4f89-9dc2-ebdfbd8960db"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
// Get client-side URLs from environment (Docker runtime)
|
// Get client-side URLs from environment (Docker runtime)
|
||||||
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
|
@ -22,7 +23,7 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||||
window.__PUBLIC_MANA_CORE_AUTH_URL__ = ${JSON.stringify(PUBLIC_MANA_CORE_AUTH_URL_CLIENT)};
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = ${JSON.stringify(PUBLIC_MANA_CORE_AUTH_URL_CLIENT)};
|
||||||
window.__PUBLIC_BACKEND_URL__ = ${JSON.stringify(PUBLIC_BACKEND_URL_CLIENT)};
|
window.__PUBLIC_BACKEND_URL__ = ${JSON.stringify(PUBLIC_BACKEND_URL_CLIENT)};
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@
|
||||||
"@manacore/shared-theme": "workspace:*",
|
"@manacore/shared-theme": "workspace:*",
|
||||||
"@manacore/shared-theme-ui": "workspace:*",
|
"@manacore/shared-theme-ui": "workspace:*",
|
||||||
"@manacore/shared-ui": "workspace:*",
|
"@manacore/shared-ui": "workspace:*",
|
||||||
|
"@manacore/shared-utils": "workspace:*",
|
||||||
"d3": "^7.9.0",
|
"d3": "^7.9.0",
|
||||||
"svelte-dnd-action": "^0.9.68",
|
"svelte-dnd-action": "^0.9.68",
|
||||||
"svelte-i18n": "^4.0.1",
|
"svelte-i18n": "^4.0.1",
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="f893945e-fea7-4493-82ab-f04812a54bea"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
19
apps/clock/apps/web/src/hooks.server.ts
Normal file
19
apps/clock/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
const PUBLIC_BACKEND_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_BACKEND_URL_CLIENT || process.env.PUBLIC_BACKEND_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript = `<script>
|
||||||
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
|
</script>`;
|
||||||
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -6,8 +6,6 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Kontakte</title>
|
<title>Kontakte</title>
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="d2cc0f01-9e46-4a88-a49b-a365f58b78e7"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
// Get client-side URLs from environment (Docker runtime)
|
// Get client-side URLs from environment (Docker runtime)
|
||||||
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
|
@ -25,7 +26,7 @@ window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
window.__PUBLIC_TODO_BACKEND_URL__ = "${PUBLIC_TODO_BACKEND_URL}";
|
window.__PUBLIC_TODO_BACKEND_URL__ = "${PUBLIC_TODO_BACKEND_URL}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="face76f4-2d3e-42be-b8c8-0ea03f33a462"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Server hooks for ManaCore web app
|
* Server hooks for ManaCore web app
|
||||||
|
|
@ -32,7 +33,7 @@ window.__PUBLIC_CALENDAR_API_URL__ = "${PUBLIC_CALENDAR_API_URL_CLIENT}";
|
||||||
window.__PUBLIC_CLOCK_API_URL__ = "${PUBLIC_CLOCK_API_URL_CLIENT}";
|
window.__PUBLIC_CLOCK_API_URL__ = "${PUBLIC_CLOCK_API_URL_CLIENT}";
|
||||||
window.__PUBLIC_CONTACTS_API_URL__ = "${PUBLIC_CONTACTS_API_URL_CLIENT}";
|
window.__PUBLIC_CONTACTS_API_URL__ = "${PUBLIC_CONTACTS_API_URL_CLIENT}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,6 @@
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="1c1d54c4-7829-43e5-8dde-0a6db7c86ec6"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
19
apps/manadeck/apps/web/src/hooks.server.ts
Normal file
19
apps/manadeck/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
const PUBLIC_BACKEND_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_BACKEND_URL_CLIENT || process.env.PUBLIC_BACKEND_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript = `<script>
|
||||||
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
|
</script>`;
|
||||||
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -50,6 +50,7 @@
|
||||||
"@manacore/shared-theme": "workspace:*",
|
"@manacore/shared-theme": "workspace:*",
|
||||||
"@manacore/shared-theme-ui": "workspace:*",
|
"@manacore/shared-theme-ui": "workspace:*",
|
||||||
"@manacore/shared-ui": "workspace:*",
|
"@manacore/shared-ui": "workspace:*",
|
||||||
|
"@manacore/shared-utils": "workspace:*",
|
||||||
"@mukke/shared": "workspace:*",
|
"@mukke/shared": "workspace:*",
|
||||||
"wavesurfer.js": "^7.8.0"
|
"wavesurfer.js": "^7.8.0"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
// Get client-side URLs from environment (Docker runtime)
|
// Get client-side URLs from environment (Docker runtime)
|
||||||
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
|
@ -21,7 +22,7 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||||
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@
|
||||||
<meta name="theme-color" content="#22C55E" />
|
<meta name="theme-color" content="#22C55E" />
|
||||||
<meta name="description" content="NutriPhi - KI-gestützte Ernährungsanalyse per Foto" />
|
<meta name="description" content="NutriPhi - KI-gestützte Ernährungsanalyse per Foto" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="33dfae72-f8e2-4aaa-8008-cbbceeaf072d"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
// Get client-side URLs from environment (Docker runtime)
|
// Get client-side URLs from environment (Docker runtime)
|
||||||
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
|
@ -21,7 +22,7 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||||
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="dc201d68-5f78-4716-a0b8-587376eca7a1"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
19
apps/photos/apps/web/src/hooks.server.ts
Normal file
19
apps/photos/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
const PUBLIC_BACKEND_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_BACKEND_URL_CLIENT || process.env.PUBLIC_BACKEND_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript = `<script>
|
||||||
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
|
</script>`;
|
||||||
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
"@manacore/shared-theme": "workspace:*",
|
"@manacore/shared-theme": "workspace:*",
|
||||||
"@manacore/shared-theme-ui": "workspace:*",
|
"@manacore/shared-theme-ui": "workspace:*",
|
||||||
"@manacore/shared-ui": "workspace:*",
|
"@manacore/shared-ui": "workspace:*",
|
||||||
|
"@manacore/shared-utils": "workspace:*",
|
||||||
"@picture/design-tokens": "workspace:*",
|
"@picture/design-tokens": "workspace:*",
|
||||||
"@picture/shared": "workspace:*",
|
"@picture/shared": "workspace:*",
|
||||||
"konva": "^10.0.2",
|
"konva": "^10.0.2",
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,6 @@
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="273f67fa-5699-40f6-b85e-7a7a0a003539"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
19
apps/picture/apps/web/src/hooks.server.ts
Normal file
19
apps/picture/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
const PUBLIC_BACKEND_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_BACKEND_URL_CLIENT || process.env.PUBLIC_BACKEND_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript = `<script>
|
||||||
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
|
</script>`;
|
||||||
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -32,16 +32,6 @@
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
<link rel="icon" href={favicon} />
|
<link rel="icon" href={favicon} />
|
||||||
|
|
||||||
<!-- Umami Analytics -->
|
|
||||||
{#if import.meta.env.PUBLIC_UMAMI_WEBSITE_ID && import.meta.env.PUBLIC_UMAMI_URL}
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src={`${import.meta.env.PUBLIC_UMAMI_URL}/script.js`}
|
|
||||||
data-website-id={import.meta.env.PUBLIC_UMAMI_WEBSITE_ID}
|
|
||||||
data-do-not-track="true"
|
|
||||||
></script>
|
|
||||||
{/if}
|
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@
|
||||||
"@manacore/shared-theme": "workspace:*",
|
"@manacore/shared-theme": "workspace:*",
|
||||||
"@manacore/shared-theme-ui": "workspace:*",
|
"@manacore/shared-theme-ui": "workspace:*",
|
||||||
"@manacore/shared-ui": "workspace:*",
|
"@manacore/shared-ui": "workspace:*",
|
||||||
|
"@manacore/shared-utils": "workspace:*",
|
||||||
"@planta/shared": "workspace:*",
|
"@planta/shared": "workspace:*",
|
||||||
"svelte-i18n": "^4.0.1"
|
"svelte-i18n": "^4.0.1"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Planta - Pflanzendokumentation</title>
|
<title>Planta - Pflanzendokumentation</title>
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="1e83a8a6-7fa8-4d39-9545-5c21dedbe3a2"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
19
apps/planta/apps/web/src/hooks.server.ts
Normal file
19
apps/planta/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
const PUBLIC_BACKEND_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_BACKEND_URL_CLIENT || process.env.PUBLIC_BACKEND_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript = `<script>
|
||||||
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
|
</script>`;
|
||||||
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -46,6 +46,7 @@
|
||||||
"@manacore/shared-theme": "workspace:*",
|
"@manacore/shared-theme": "workspace:*",
|
||||||
"@manacore/shared-theme-ui": "workspace:*",
|
"@manacore/shared-theme-ui": "workspace:*",
|
||||||
"@manacore/shared-ui": "workspace:*",
|
"@manacore/shared-ui": "workspace:*",
|
||||||
|
"@manacore/shared-utils": "workspace:*",
|
||||||
"svelte-i18n": "^4.0.1"
|
"svelte-i18n": "^4.0.1"
|
||||||
},
|
},
|
||||||
"type": "module"
|
"type": "module"
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="a1eb8d1f-a4d5-43e6-b97a-c41351fe1c6f"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
19
apps/presi/apps/web/src/hooks.server.ts
Normal file
19
apps/presi/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
const PUBLIC_BACKEND_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_BACKEND_URL_CLIENT || process.env.PUBLIC_BACKEND_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript = `<script>
|
||||||
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
|
</script>`;
|
||||||
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
19
apps/questions/apps/web/src/hooks.server.ts
Normal file
19
apps/questions/apps/web/src/hooks.server.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
const PUBLIC_BACKEND_URL_CLIENT =
|
||||||
|
process.env.PUBLIC_BACKEND_URL_CLIENT || process.env.PUBLIC_BACKEND_URL || '';
|
||||||
|
|
||||||
|
export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
return resolve(event, {
|
||||||
|
transformPageChunk: ({ html }) => {
|
||||||
|
const envScript = `<script>
|
||||||
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
|
</script>`;
|
||||||
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -16,8 +16,6 @@
|
||||||
<meta name="apple-mobile-web-app-title" content="SkillTree" />
|
<meta name="apple-mobile-web-app-title" content="SkillTree" />
|
||||||
|
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="5de13e08-95ae-4a69-aa2a-834f985be14d"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
process.env.PUBLIC_MANA_CORE_AUTH_URL_CLIENT || process.env.PUBLIC_MANA_CORE_AUTH_URL || '';
|
||||||
|
|
@ -18,7 +19,7 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||||
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@
|
||||||
"@manacore/shared-theme": "workspace:*",
|
"@manacore/shared-theme": "workspace:*",
|
||||||
"@manacore/shared-theme-ui": "workspace:*",
|
"@manacore/shared-theme-ui": "workspace:*",
|
||||||
"@manacore/shared-ui": "workspace:*",
|
"@manacore/shared-ui": "workspace:*",
|
||||||
|
"@manacore/shared-utils": "workspace:*",
|
||||||
"svelte-i18n": "^4.0.1"
|
"svelte-i18n": "^4.0.1"
|
||||||
},
|
},
|
||||||
"type": "module"
|
"type": "module"
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,7 @@
|
||||||
<meta property="og:description" content="Dein sicherer Cloud-Speicher für Dateien, Ordner und mehr." />
|
<meta property="og:description" content="Dein sicherer Cloud-Speicher für Dateien, Ordner und mehr." />
|
||||||
<meta property="og:site_name" content="Storage" />
|
<meta property="og:site_name" content="Storage" />
|
||||||
<title>Storage - Cloud Drive</title>
|
<title>Storage - Cloud Drive</title>
|
||||||
<link rel="preconnect" href="https://stats.mana.how" />
|
|
||||||
<link rel="dns-prefetch" href="https://stats.mana.how" />
|
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="392ff51d-11f1-4f0c-9d55-6af1402a3ee6"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,6 @@
|
||||||
|
|
||||||
<title>Todo</title>
|
<title>Todo</title>
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="ec1bb158-d871-4bc6-bdbc-147c97b9c1c7"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
// Get client-side URLs from environment (Docker runtime)
|
// Get client-side URLs from environment (Docker runtime)
|
||||||
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
|
@ -21,7 +22,7 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||||
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,6 @@
|
||||||
<meta name="description" content="Zitare - Inspirierende Zitate jeden Tag" />
|
<meta name="description" content="Zitare - Inspirierende Zitate jeden Tag" />
|
||||||
<title>Zitare</title>
|
<title>Zitare</title>
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
<!-- Umami Analytics -->
|
|
||||||
<script defer src="https://stats.mana.how/script.js" data-website-id="6a86139a-d8e2-469c-9754-1c40a70397fa"></script>
|
|
||||||
</head>
|
</head>
|
||||||
<body data-sveltekit-preload-data="hover">
|
<body data-sveltekit-preload-data="hover">
|
||||||
<div style="display: contents">%sveltekit.body%</div>
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
|
import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
|
||||||
// Get client-side URLs from environment (Docker runtime)
|
// Get client-side URLs from environment (Docker runtime)
|
||||||
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
const PUBLIC_MANA_CORE_AUTH_URL_CLIENT =
|
||||||
|
|
@ -21,7 +22,7 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||||
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
window.__PUBLIC_MANA_CORE_AUTH_URL__ = "${PUBLIC_MANA_CORE_AUTH_URL_CLIENT}";
|
||||||
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
window.__PUBLIC_BACKEND_URL__ = "${PUBLIC_BACKEND_URL_CLIENT}";
|
||||||
</script>`;
|
</script>`;
|
||||||
return html.replace('<head>', `<head>${envScript}`);
|
return injectUmamiAnalytics(html.replace('<head>', `<head>${envScript}`));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,35 @@ ManaCore verwendet Umami für Web Analytics. Alle Events werden zu `stats.mana.h
|
||||||
- **URL**: https://stats.mana.how
|
- **URL**: https://stats.mana.how
|
||||||
- **Public Stats**: Alle Websites haben Public Sharing aktiviert
|
- **Public Stats**: Alle Websites haben Public Sharing aktiviert
|
||||||
|
|
||||||
|
## Architektur
|
||||||
|
|
||||||
|
Web-App Analytics werden über `hooks.server.ts` injiziert (nicht mehr hardcoded in `app.html`).
|
||||||
|
|
||||||
|
```
|
||||||
|
.env.development → UMAMI_WEBSITE_ID_CHAT=xxx
|
||||||
|
↓ (scripts/generate-env.mjs)
|
||||||
|
apps/chat/apps/web/.env → PUBLIC_UMAMI_WEBSITE_ID=xxx
|
||||||
|
↓ (process.env in hooks.server.ts)
|
||||||
|
injectUmamiAnalytics(html) → <script defer src="stats.mana.how/script.js" data-website-id="xxx">
|
||||||
|
```
|
||||||
|
|
||||||
|
### Zentrale Konfiguration
|
||||||
|
|
||||||
|
- **Website-IDs**: `.env.development` (`UMAMI_WEBSITE_ID_*`)
|
||||||
|
- **Env-Verteilung**: `scripts/generate-env.mjs` → `PUBLIC_UMAMI_WEBSITE_ID`
|
||||||
|
- **Server-Side Injection**: `@manacore/shared-utils/analytics-server` (`injectUmamiAnalytics()`)
|
||||||
|
- **Client-Side Events**: `@manacore/shared-utils/analytics` (`trackEvent()`, etc.)
|
||||||
|
|
||||||
|
### Neue App hinzufügen
|
||||||
|
|
||||||
|
1. Website in Umami anlegen (https://umami.mana.how)
|
||||||
|
2. `UMAMI_WEBSITE_ID_APPNAME=<uuid>` zu `.env.development` hinzufügen
|
||||||
|
3. `PUBLIC_UMAMI_WEBSITE_ID` Mapping in `scripts/generate-env.mjs` hinzufügen
|
||||||
|
4. `@manacore/shared-utils` als Dependency in der Web-App `package.json`
|
||||||
|
5. In `hooks.server.ts`: `import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server'`
|
||||||
|
6. `injectUmamiAnalytics(html)` im `transformPageChunk` aufrufen
|
||||||
|
7. `pnpm setup:env` ausführen
|
||||||
|
|
||||||
## Website IDs
|
## Website IDs
|
||||||
|
|
||||||
### Landing Pages
|
### Landing Pages
|
||||||
|
|
@ -33,6 +62,8 @@ ManaCore verwendet Umami für Web Analytics. Alle Events werden zu `stats.mana.h
|
||||||
| Picture | `bc552bd2-667d-44b4-a717-0dce6a8db98f` | stats.mana.how/share/picturewebapp |
|
| Picture | `bc552bd2-667d-44b4-a717-0dce6a8db98f` | stats.mana.how/share/picturewebapp |
|
||||||
| ManaDeck | `314fc57a-c63d-4008-b19e-5e272c0329d6` | stats.mana.how/share/manadeckwebapp |
|
| ManaDeck | `314fc57a-c63d-4008-b19e-5e272c0329d6` | stats.mana.how/share/manadeckwebapp |
|
||||||
| Planta | `876f30bd-43e3-405a-9697-6157db67ca6b` | stats.mana.how/share/plantawebapp |
|
| Planta | `876f30bd-43e3-405a-9697-6157db67ca6b` | stats.mana.how/share/plantawebapp |
|
||||||
|
| Mukke | `89015bbb-dc59-45b7-ad51-2a68a1391553` | stats.mana.how/share/mukkewebapp |
|
||||||
|
| Questions | `4940b9a8-834a-483a-8696-a3086bd531e6` | stats.mana.how/share/questionswebapp |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,9 @@
|
||||||
"main": "./src/index.ts",
|
"main": "./src/index.ts",
|
||||||
"types": "./src/index.ts",
|
"types": "./src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
".": "./src/index.ts"
|
".": "./src/index.ts",
|
||||||
|
"./analytics": "./src/analytics.ts",
|
||||||
|
"./analytics-server": "./src/analytics-server.ts"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"type-check": "tsc --noEmit",
|
"type-check": "tsc --noEmit",
|
||||||
|
|
|
||||||
43
packages/shared-utils/src/analytics-server.ts
Normal file
43
packages/shared-utils/src/analytics-server.ts
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
/**
|
||||||
|
* Server-side Umami Analytics Utilities
|
||||||
|
*
|
||||||
|
* Used in SvelteKit hooks.server.ts to inject the Umami analytics script.
|
||||||
|
* Reads the website ID from the PUBLIC_UMAMI_WEBSITE_ID environment variable.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```typescript
|
||||||
|
* import { injectUmamiAnalytics } from '@manacore/shared-utils/analytics-server';
|
||||||
|
*
|
||||||
|
* export const handle: Handle = async ({ event, resolve }) => {
|
||||||
|
* return resolve(event, {
|
||||||
|
* transformPageChunk: ({ html }) => injectUmamiAnalytics(html),
|
||||||
|
* });
|
||||||
|
* };
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
|
||||||
|
const UMAMI_SCRIPT_URL = 'https://stats.mana.how/script.js';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Umami analytics script tag.
|
||||||
|
* Returns empty string if no website ID is configured.
|
||||||
|
*/
|
||||||
|
export function getUmamiScriptTag(websiteId?: string): string {
|
||||||
|
const id = websiteId || process.env.PUBLIC_UMAMI_WEBSITE_ID || '';
|
||||||
|
if (!id) return '';
|
||||||
|
return `<script defer src="${UMAMI_SCRIPT_URL}" data-website-id="${id}"></script>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inject the Umami analytics script into HTML.
|
||||||
|
* Designed to be used in SvelteKit's transformPageChunk.
|
||||||
|
*
|
||||||
|
* @param html - The HTML string to inject the script into
|
||||||
|
* @param websiteId - Optional website ID override (defaults to PUBLIC_UMAMI_WEBSITE_ID env var)
|
||||||
|
* @returns The HTML with the Umami script injected before </head>
|
||||||
|
*/
|
||||||
|
export function injectUmamiAnalytics(html: string, websiteId?: string): string {
|
||||||
|
const scriptTag = getUmamiScriptTag(websiteId);
|
||||||
|
if (!scriptTag) return html;
|
||||||
|
return html.replace('</head>', `${scriptTag}\n</head>`);
|
||||||
|
}
|
||||||
18
pnpm-lock.yaml
generated
18
pnpm-lock.yaml
generated
|
|
@ -1036,6 +1036,9 @@ importers:
|
||||||
'@manacore/shared-ui':
|
'@manacore/shared-ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../../packages/shared-ui
|
version: link:../../../../packages/shared-ui
|
||||||
|
'@manacore/shared-utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../../../packages/shared-utils
|
||||||
d3:
|
d3:
|
||||||
specifier: ^7.9.0
|
specifier: ^7.9.0
|
||||||
version: 7.9.0
|
version: 7.9.0
|
||||||
|
|
@ -2943,6 +2946,9 @@ importers:
|
||||||
'@manacore/shared-ui':
|
'@manacore/shared-ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../../packages/shared-ui
|
version: link:../../../../packages/shared-ui
|
||||||
|
'@manacore/shared-utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../../../packages/shared-utils
|
||||||
'@mukke/shared':
|
'@mukke/shared':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/shared
|
version: link:../../packages/shared
|
||||||
|
|
@ -3952,6 +3958,9 @@ importers:
|
||||||
'@manacore/shared-ui':
|
'@manacore/shared-ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../../packages/shared-ui
|
version: link:../../../../packages/shared-ui
|
||||||
|
'@manacore/shared-utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../../../packages/shared-utils
|
||||||
'@picture/design-tokens':
|
'@picture/design-tokens':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/design-tokens
|
version: link:../../packages/design-tokens
|
||||||
|
|
@ -4247,6 +4256,9 @@ importers:
|
||||||
'@manacore/shared-ui':
|
'@manacore/shared-ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../../packages/shared-ui
|
version: link:../../../../packages/shared-ui
|
||||||
|
'@manacore/shared-utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../../../packages/shared-utils
|
||||||
'@planta/shared':
|
'@planta/shared':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/shared
|
version: link:../../packages/shared
|
||||||
|
|
@ -4587,6 +4599,9 @@ importers:
|
||||||
'@manacore/shared-ui':
|
'@manacore/shared-ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../../packages/shared-ui
|
version: link:../../../../packages/shared-ui
|
||||||
|
'@manacore/shared-utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../../../packages/shared-utils
|
||||||
'@presi/shared':
|
'@presi/shared':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/shared
|
version: link:../../packages/shared
|
||||||
|
|
@ -5197,6 +5212,9 @@ importers:
|
||||||
'@manacore/shared-ui':
|
'@manacore/shared-ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../../packages/shared-ui
|
version: link:../../../../packages/shared-ui
|
||||||
|
'@manacore/shared-utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../../../packages/shared-utils
|
||||||
svelte-i18n:
|
svelte-i18n:
|
||||||
specifier: ^4.0.1
|
specifier: ^4.0.1
|
||||||
version: 4.0.1(svelte@5.44.0)
|
version: 4.0.1(svelte@5.44.0)
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,7 @@ const APP_CONFIGS = [
|
||||||
PUBLIC_SUPABASE_URL: (env) => env.CHAT_SUPABASE_URL,
|
PUBLIC_SUPABASE_URL: (env) => env.CHAT_SUPABASE_URL,
|
||||||
PUBLIC_SUPABASE_ANON_KEY: (env) => env.CHAT_SUPABASE_ANON_KEY,
|
PUBLIC_SUPABASE_ANON_KEY: (env) => env.CHAT_SUPABASE_ANON_KEY,
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.CHAT_BACKEND_PORT || '3002'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.CHAT_BACKEND_PORT || '3002'}`,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_CHAT || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -137,6 +138,7 @@ const APP_CONFIGS = [
|
||||||
PUBLIC_SUPABASE_URL: (env) => env.MANACORE_SUPABASE_URL,
|
PUBLIC_SUPABASE_URL: (env) => env.MANACORE_SUPABASE_URL,
|
||||||
PUBLIC_SUPABASE_ANON_KEY: (env) => env.MANACORE_SUPABASE_ANON_KEY,
|
PUBLIC_SUPABASE_ANON_KEY: (env) => env.MANACORE_SUPABASE_ANON_KEY,
|
||||||
MIDDLEWARE_URL: (env) => env.MANA_CORE_AUTH_URL,
|
MIDDLEWARE_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_MANACORE || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -181,6 +183,7 @@ const APP_CONFIGS = [
|
||||||
PUBLIC_SUPABASE_ANON_KEY: (env) => env.MANADECK_SUPABASE_ANON_KEY,
|
PUBLIC_SUPABASE_ANON_KEY: (env) => env.MANADECK_SUPABASE_ANON_KEY,
|
||||||
PUBLIC_API_URL: (env) => `http://localhost:${env.MANADECK_BACKEND_PORT || '3004'}`,
|
PUBLIC_API_URL: (env) => `http://localhost:${env.MANADECK_BACKEND_PORT || '3004'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_MANADECK || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -231,6 +234,7 @@ const APP_CONFIGS = [
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
PUBLIC_GOOGLE_CLIENT_ID: (env) => env.PICTURE_GOOGLE_CLIENT_ID || '',
|
PUBLIC_GOOGLE_CLIENT_ID: (env) => env.PICTURE_GOOGLE_CLIENT_ID || '',
|
||||||
PUBLIC_APPLE_CLIENT_ID: (env) => env.PICTURE_APPLE_CLIENT_ID || '',
|
PUBLIC_APPLE_CLIENT_ID: (env) => env.PICTURE_APPLE_CLIENT_ID || '',
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_PICTURE || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -259,6 +263,7 @@ const APP_CONFIGS = [
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.NUTRIPHI_BACKEND_PORT || '3002'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.NUTRIPHI_BACKEND_PORT || '3002'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
PUBLIC_MIDDLEWARE_APP_ID: (env) => env.NUTRIPHI_APP_ID || 'nutriphi',
|
PUBLIC_MIDDLEWARE_APP_ID: (env) => env.NUTRIPHI_APP_ID || 'nutriphi',
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_NUTRIPHI || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -291,6 +296,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.ZITARE_BACKEND_PORT || '3007'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.ZITARE_BACKEND_PORT || '3007'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_ZITARE || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -324,6 +330,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.PRESI_BACKEND_PORT || '3008'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.PRESI_BACKEND_PORT || '3008'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_PRESI || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -348,6 +355,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.SKILLTREE_BACKEND_PORT || '3024'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.SKILLTREE_BACKEND_PORT || '3024'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_SKILLTREE || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -443,6 +451,7 @@ const APP_CONFIGS = [
|
||||||
PUBLIC_CONTACTS_WEB_URL: () => 'http://localhost:5184',
|
PUBLIC_CONTACTS_WEB_URL: () => 'http://localhost:5184',
|
||||||
// Speech-to-Text Service
|
// Speech-to-Text Service
|
||||||
PUBLIC_STT_URL: (env) => env.STT_URL || 'http://localhost:3020',
|
PUBLIC_STT_URL: (env) => env.STT_URL || 'http://localhost:3020',
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_CALENDAR || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -484,6 +493,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.CONTACTS_BACKEND_PORT || '3015'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.CONTACTS_BACKEND_PORT || '3015'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_CONTACTS || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -514,6 +524,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.STORAGE_BACKEND_PORT || '3016'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.STORAGE_BACKEND_PORT || '3016'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_STORAGE || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -537,6 +548,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.CLOCK_BACKEND_PORT || '3017'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.CLOCK_BACKEND_PORT || '3017'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_CLOCK || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -560,6 +572,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.TODO_BACKEND_PORT || '3018'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.TODO_BACKEND_PORT || '3018'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_TODO || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -688,6 +701,36 @@ const APP_CONFIGS = [
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Photos Web (SvelteKit)
|
||||||
|
{
|
||||||
|
path: 'apps/photos/apps/web/.env',
|
||||||
|
vars: {
|
||||||
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.PHOTOS_BACKEND_PORT || '3039'}`,
|
||||||
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_PHOTOS || '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// Planta Web (SvelteKit)
|
||||||
|
{
|
||||||
|
path: 'apps/planta/apps/web/.env',
|
||||||
|
vars: {
|
||||||
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.PLANTA_BACKEND_PORT || '3022'}`,
|
||||||
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_PLANTA || '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
// Questions Web (SvelteKit)
|
||||||
|
{
|
||||||
|
path: 'apps/questions/apps/web/.env',
|
||||||
|
vars: {
|
||||||
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.QUESTIONS_BACKEND_PORT || '3011'}`,
|
||||||
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_QUESTIONS || '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
// Mukke Backend (NestJS)
|
// Mukke Backend (NestJS)
|
||||||
{
|
{
|
||||||
path: 'apps/mukke/apps/backend/.env',
|
path: 'apps/mukke/apps/backend/.env',
|
||||||
|
|
@ -713,6 +756,7 @@ const APP_CONFIGS = [
|
||||||
vars: {
|
vars: {
|
||||||
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.MUKKE_BACKEND_PORT || '3010'}`,
|
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.MUKKE_BACKEND_PORT || '3010'}`,
|
||||||
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
PUBLIC_MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL,
|
||||||
|
PUBLIC_UMAMI_WEBSITE_ID: (env) => env.UMAMI_WEBSITE_ID_MUKKE || '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue