diff --git a/CHANGELOG.md b/CHANGELOG.md index 06b73b2..1917c63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ Toutes les évolutions notables de NerdWare. Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/), versionné en [SemVer](https://semver.org/lang/fr/). +## [0.1.2] — 2026-06-12 + +### Ajouté + +- **Umami analytics** (optionnel) : suivi d'audience injecté seulement si + `VITE_UMAMI_SRC` + `VITE_UMAMI_WEBSITE_ID` sont définis au build (sinon désactivé, + pas de suivi en dev). L'ID de site est public, pas un secret. + ## [0.1.1] — 2026-06-12 Correctifs et améliorations issus des premières parties entre amis. @@ -55,5 +63,6 @@ fin), trois modes, back-office et internationalisation. - **Déploiement** : Dockerfiles (serveur Bun, client nginx) + `docker-compose.prod.yml` prêt pour Dokploy. +[0.1.2]: https://git.ayoubbenziza.dev/ayoub/nerdware/src/tag/v0.1.2 [0.1.1]: https://git.ayoubbenziza.dev/ayoub/nerdware/src/tag/v0.1.1 [0.1.0]: https://git.ayoubbenziza.dev/ayoub/nerdware/src/tag/v0.1.0 diff --git a/apps/server/package.json b/apps/server/package.json index 0369747..48b276a 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,6 +1,6 @@ { "name": "@nerdware/server", - "version": "0.1.1", + "version": "0.1.2", "type": "module", "private": true, "scripts": { diff --git a/apps/web/.env.example b/apps/web/.env.example index 26e6ed8..4648fe8 100644 --- a/apps/web/.env.example +++ b/apps/web/.env.example @@ -1 +1,5 @@ VITE_SERVER_URL=http://localhost:3001 + +# Umami analytics (optionnel, prod). Vide en dev = pas de suivi. +VITE_UMAMI_SRC= +VITE_UMAMI_WEBSITE_ID= diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index ba9a281..344ce1e 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -15,6 +15,11 @@ COPY apps/web apps/web ARG VITE_SERVER_URL ENV VITE_SERVER_URL=$VITE_SERVER_URL +# Umami analytics (optionnel) — figé au build. +ARG VITE_UMAMI_SRC +ENV VITE_UMAMI_SRC=$VITE_UMAMI_SRC +ARG VITE_UMAMI_WEBSITE_ID +ENV VITE_UMAMI_WEBSITE_ID=$VITE_UMAMI_WEBSITE_ID RUN bun run --filter web build FROM nginx:1.27-alpine AS runner diff --git a/apps/web/package.json b/apps/web/package.json index 65493dc..ad8ae69 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "0.1.1", + "version": "0.1.2", "type": "module", "private": true, "scripts": { diff --git a/apps/web/src/lib/analytics.ts b/apps/web/src/lib/analytics.ts new file mode 100644 index 0000000..f904e00 --- /dev/null +++ b/apps/web/src/lib/analytics.ts @@ -0,0 +1,20 @@ +// Umami analytics : on injecte le script seulement si les variables de build +// sont présentes (donc pas en dev → pas de trafic local dans les stats). +// L'ID de site est public (visible dans le HTML), ce n'est pas un secret. + +const SRC = import.meta.env.VITE_UMAMI_SRC +const WEBSITE_ID = import.meta.env.VITE_UMAMI_WEBSITE_ID + +export function initAnalytics(): void { + if (!SRC || !WEBSITE_ID) { + return + } + if (document.querySelector("script[data-website-id]")) { + return + } + const script = document.createElement("script") + script.defer = true + script.src = SRC + script.setAttribute("data-website-id", WEBSITE_ID) + document.head.appendChild(script) +} diff --git a/apps/web/src/main.tsx b/apps/web/src/main.tsx index e611d29..5d70ca3 100644 --- a/apps/web/src/main.tsx +++ b/apps/web/src/main.tsx @@ -6,6 +6,9 @@ import "@workspace/ui/globals.css" import { App } from "./App.tsx" import { ThemeProvider } from "@/components/theme-provider.tsx" import { I18nProvider } from "@/i18n/provider" +import { initAnalytics } from "@/lib/analytics" + +initAnalytics() const queryClient = new QueryClient() diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 32ed268..cc8fb33 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -54,6 +54,8 @@ services: dockerfile: apps/web/Dockerfile args: VITE_SERVER_URL: ${VITE_SERVER_URL} + VITE_UMAMI_SRC: ${VITE_UMAMI_SRC:-} + VITE_UMAMI_WEBSITE_ID: ${VITE_UMAMI_WEBSITE_ID:-} restart: unless-stopped depends_on: - server diff --git a/package.json b/package.json index 07caccd..caa1f40 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nerdware", - "version": "0.1.1", + "version": "0.1.2", "private": true, "scripts": { "build": "turbo build", diff --git a/packages/shared/package.json b/packages/shared/package.json index e4cff9a..455310a 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@nerdware/shared", - "version": "0.1.1", + "version": "0.1.2", "type": "module", "private": true, "scripts": {