Skip to content

Commit

Permalink
Ajout du tracking posthog sur le site
Browse files Browse the repository at this point in the history
  • Loading branch information
mariheck committed May 14, 2024
1 parent 42b7970 commit 0940a16
Show file tree
Hide file tree
Showing 14 changed files with 104 additions and 161 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/cd-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ jobs:
--ENV_NAME=${{ github.event.inputs.target }}
--ANON_KEY=${{ secrets.ANON_KEY }} --API_URL=${{ secrets.API_URL }}
--STRAPI_KEY=${{ secrets.STRAPI_KEY }} --STRAPI_URL=${{ secrets.STRAPI_URL }}
--AMPLITUDE_KEY=${{ vars.AMPLITUDE_KEY }}
--POSTHOG_HOST=${{ secrets.POSTHOG_HOST }} --POSTHOG_KEY=${{ secrets.POSTHOG_KEY }}
--AXEPTIO_ID=${{ vars.AXEPTIO_ID }}
- name: Deploy site on Koyeb
run: >
Expand Down
8 changes: 6 additions & 2 deletions Earthfile
Original file line number Diff line number Diff line change
Expand Up @@ -416,14 +416,18 @@ site-build: ## construit l'image du site
ARG --required API_URL
ARG --required STRAPI_KEY
ARG --required STRAPI_URL
ARG AMPLITUDE_KEY
ARG POSTHOG_HOST
ARG POSTHOG_KEY
ARG AXEPTIO_ID
ARG vars
FROM +front-deps
ENV NEXT_PUBLIC_STRAPI_KEY=$STRAPI_KEY
ENV NEXT_PUBLIC_STRAPI_URL=$STRAPI_URL
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$ANON_KEY
ENV NEXT_PUBLIC_SUPABASE_URL=$API_URL
ENV NEXT_PUBLIC_AMPLITUDE_KEY=$AMPLITUDE_KEY
ENV NEXT_PUBLIC_POSTHOG_HOST=$POSTHOG_HOST
ENV NEXT_PUBLIC_POSTHOG_KEY=$POSTHOG_KEY
ENV NEXT_PUBLIC_AXEPTIO_ID=$AXEPTIO_ID
ENV NEXT_TELEMETRY_DISABLED=1
ENV PUBLIC_PATH="/app/packages/site/public"
ENV PORT=80
Expand Down
68 changes: 10 additions & 58 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions packages/site/.env.sample
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
NEXT_PUBLIC_SUPABASE_URL=http://localhost:8000
NEXT_PUBLIC_SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY}
NEXT_PUBLIC_AMPLITUDE_KEY
NEXT_PUBLIC_SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY}
25 changes: 0 additions & 25 deletions packages/site/app/Amplitude.tsx

This file was deleted.

16 changes: 16 additions & 0 deletions packages/site/app/TrackPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
'use client';

import {usePathname} from 'next/navigation';
import {TrackPageView} from '@tet/ui';

const TrackPage = () => {
const pathName = usePathname();

return (
<TrackPageView
pageName={`site${pathName === '/' ? '/accueil' : pathName}`}
/>
);
};

export default TrackPage;
45 changes: 0 additions & 45 deletions packages/site/app/api/amplitude/route.ts

This file was deleted.

25 changes: 14 additions & 11 deletions packages/site/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import './global.css';
import AppHeader from './AppHeader';
import {Metadata, Viewport} from 'next';
import {getMetaData} from './utils';
import {Amplitude} from './Amplitude';
import Footer from '@components/layout/Footer';
import {PHProvider} from 'providers/posthog';
import TrackPage from './TrackPage';

export const viewport: Viewport = {
width: 'device-width',
Expand Down Expand Up @@ -70,15 +71,17 @@ export async function generateMetadata(): Promise<Metadata> {

export default function RootLayout({children}: {children: JSX.Element}) {
return (
<html>
<body className="min-h-screen flex flex-col justify-between">
<div className="grow flex flex-col">
<AppHeader />
<div className="grow flex flex-col">{children}</div>
</div>
<Footer />
<Amplitude />
</body>
</html>
<PHProvider>
<html>
<body className="min-h-screen flex flex-col justify-between">
<div className="grow flex flex-col">
<AppHeader />
<div className="grow flex flex-col">{children}</div>
</div>
<Footer />
<TrackPage />
</body>
</html>
</PHProvider>
);
}
20 changes: 8 additions & 12 deletions packages/site/app/stats/EvolutionCollectivitesLabellisees.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,14 @@ const useEvolutionCollectivitesLabellisees = (

return data
.filter(d => d.mois !== null)
.map(d => {
if (d.mois) console.log(new Date(d.mois).getFullYear());

return {
mois: d.mois,
'1 étoile': d.etoile_1 ?? 0,
'2 étoiles': d.etoile_2 ?? 0,
'3 étoiles': d.etoile_3 ?? 0,
'4 étoiles': d.etoile_4 ?? 0,
'5 étoiles': d.etoile_5 ?? 0,
};
});
.map(d => ({
mois: d.mois,
'1 étoile': d.etoile_1 ?? 0,
'2 étoiles': d.etoile_2 ?? 0,
'3 étoiles': d.etoile_3 ?? 0,
'4 étoiles': d.etoile_4 ?? 0,
'5 étoiles': d.etoile_5 ?? 0,
}));
},
);
};
Expand Down
6 changes: 4 additions & 2 deletions packages/site/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export function middleware(request: NextRequest) {
// options de la politique de sécurité
const cspHeader = `
default-src 'self';
script-src ${scriptSrc};
script-src ${scriptSrc} *.axept.io *.posthog.com;
style-src ${styleSrc};
img-src 'self' blob: data: ytimg.com ${process.env.NEXT_PUBLIC_STRAPI_URL?.replace(
'strapiapp',
Expand All @@ -36,7 +36,9 @@ export function middleware(request: NextRequest) {
connect-src 'self'
${process.env.NEXT_PUBLIC_SUPABASE_URL!}
${process.env.NEXT_PUBLIC_STRAPI_URL!}
ws://${request.nextUrl.host};
ws://${request.nextUrl.host}
*.posthog.com
*.axept.io;
base-uri 'self';
form-action 'self';
frame-ancestors 'none';
Expand Down
9 changes: 9 additions & 0 deletions packages/site/next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ const nextConfig = {
],
},
],
// Reverse Proxy vers PostHog : https://posthog.com/docs/advanced/proxy/nextjs
async rewrites() {
return [
{
source: '/ingest/:path*',
destination: 'https://eu.posthog.com/:path*',
},
];
},
};

// ajoute le traitement des fichiers mdx
Expand Down
4 changes: 2 additions & 2 deletions packages/site/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"format": "prettier --write \"**/*.{js,ts,jsx,tsx}\""
},
"dependencies": {
"@amplitude/analytics-browser": "^2.3.5",
"@floating-ui/react": "^0.25.2",
"@gouvfr/dsfr": "^1.10.0",
"@mdx-js/loader": "^2.3.0",
Expand All @@ -34,6 +33,7 @@
"leaflet": "^1.9.4",
"leaflet-defaulticon-compatibility": "^0.1.2",
"next": "^14.0.4",
"posthog-js": "^1.131.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-leaflet": "^4.2.1",
Expand Down Expand Up @@ -64,4 +64,4 @@
"main": ".prettierrc.js",
"author": "",
"license": "ISC"
}
}
31 changes: 31 additions & 0 deletions packages/site/providers/posthog.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use client';

import {
Consent,
createTrackingClient,
getConsent,
getNextConsentEnvId,
getNextTrackingEnv,
ScriptLikeProps,
TrackingProvider,
} from '@tet/ui';
import Script from 'next/script';

const client = createTrackingClient(getNextTrackingEnv());

const onConsentSave = () => {
client.set_config({persistence: getConsent() ? 'cookie' : 'memory'});
};

export const PHProvider = ({children}: {children: React.ReactNode}) => {
return (
<>
<TrackingProvider client={client}>{children}</TrackingProvider>
<Consent
onConsentSave={onConsentSave}
consentId={getNextConsentEnvId()}
script={(props: ScriptLikeProps) => <Script {...props} />}
/>
</>
);
};
2 changes: 1 addition & 1 deletion packages/ui/src/components/tracking/TrackPageView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ function isRelativeToCollectivite(object: unknown): object is {
type TrackPageViewProps<N extends PageName> = {
pageName: N;
} & (TrackingPlan[N]['properties'] extends object
? {properties: TrackingPlan[N]['properties']}
? {properties?: TrackingPlan[N]['properties']}
: {properties?: undefined});

/**
Expand Down

0 comments on commit 0940a16

Please sign in to comment.