feat: integrate PostHog analytics for frontend and PWA

- Install posthog-js and @posthog/react packages
- Add PostHogProvider wrapper in main.tsx for both apps
- Configure PostHog with EU instance and 2026-01-30 defaults
- Add environment variables for API key and host
- Update docker-compose.coolify.yml with PostHog build args
This commit is contained in:
dimitar committed 2026-03-01 01:04:17 +01:00
1 parent 64588935ca
commit b9a4a45781
9 files changed
+1008 -185

No files matched your search

+4
View File
@@ -11,3 +11,7 @@ VITE_API_URL=http://localhost:3000/api/v1
# ===== COMMON =====
VITE_CMS_URL=http://localhost:1337
# ===== POSTHOG ANALYTICS =====
VITE_PUBLIC_POSTHOG_KEY=phc_kuDGT1kUmJmijLRjiQaKWIaU4JBdFW0aELW2hIGlBXR
VITE_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com
+2
View File
@@ -18,6 +18,7 @@
"dev:reset-env": "cp -f .env.docker .env"
},
"dependencies": {
"@posthog/react": "^1.8.1",
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-slot": "^1.2.4",
@@ -27,6 +28,7 @@
"@tanstack/react-query": "^5.90.14",
"@tanstack/react-router": "^1.144.0",
"date-fns": "^4.1.0",
"posthog-js": "^1.356.1",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-markdown": "^10.1.0",
+16 -5
View File
@@ -2,6 +2,7 @@ import { StrictMode } from 'react'
import ReactDOM from 'react-dom/client'
import { RouterProvider } from '@tanstack/react-router'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { PostHogProvider } from '@posthog/react'
import { router } from './routes'
import { AuthProvider } from './contexts/AuthContext'
import { initializeTheme } from './lib/theme'
@@ -11,12 +12,22 @@ initializeTheme();
const queryClient = new QueryClient()
const posthogOptions = {
api_host: import.meta.env.VITE_PUBLIC_POSTHOG_HOST,
defaults: '2026-01-30',
} as const
ReactDOM.createRoot(document.getElementById('root')!).render(
<StrictMode>
<QueryClientProvider client={queryClient}>
<AuthProvider>
<RouterProvider router={router} />
</AuthProvider>
</QueryClientProvider>
<PostHogProvider
apiKey={import.meta.env.VITE_PUBLIC_POSTHOG_KEY}
options={posthogOptions}
>
<QueryClientProvider client={queryClient}>
<AuthProvider>
<RouterProvider router={router} />
</AuthProvider>
</QueryClientProvider>
</PostHogProvider>
</StrictMode>,
)