From 699f4ea27e87643577a1002e1498f75ec243f97a Mon Sep 17 00:00:00 2001 From: Alex Patterson Date: Sat, 10 Oct 2026 15:34:09 -0400 Subject: [PATCH] feat(analytics): add Cloudflare Workers Analytics Engine edge telemetry, sendBeacon click tracking, and first-party PostHog /ingest proxy --- apps/site/.dev.vars.example | 3 + .../site/src/components/AnalyticsBeacon.astro | 175 +++++++++++++ apps/site/src/components/Header.astro | 2 + apps/site/src/components/PodcastListen.astro | 9 + apps/site/src/components/SponsorCard.astro | 3 + apps/site/src/layouts/BaseLayout.astro | 2 + apps/site/src/lib/analytics.ts | 231 ++++++++++++++++++ apps/site/src/middleware.ts | 22 ++ apps/site/src/pages/api/event.ts | 44 ++++ apps/site/src/pages/ingest/[...path].ts | 63 +++++ apps/site/wrangler.jsonc | 14 +- 11 files changed, 567 insertions(+), 1 deletion(-) create mode 100644 apps/site/src/components/AnalyticsBeacon.astro create mode 100644 apps/site/src/lib/analytics.ts create mode 100644 apps/site/src/pages/api/event.ts create mode 100644 apps/site/src/pages/ingest/[...path].ts diff --git a/apps/site/.dev.vars.example b/apps/site/.dev.vars.example index a90ca9b4c..7f2b277f8 100644 --- a/apps/site/.dev.vars.example +++ b/apps/site/.dev.vars.example @@ -1,2 +1,5 @@ # Local secrets for `wrangler dev` / platformProxy. Copy to .dev.vars (gitignored). SANITY_API_READ_TOKEN= +# Optional: PostHog project key for visitor flows, funnels, and LMS telemetry via /ingest proxy +PUBLIC_POSTHOG_KEY= +PUBLIC_POSTHOG_HOST=https://us.i.posthog.com diff --git a/apps/site/src/components/AnalyticsBeacon.astro b/apps/site/src/components/AnalyticsBeacon.astro new file mode 100644 index 000000000..e18ddc9c1 --- /dev/null +++ b/apps/site/src/components/AnalyticsBeacon.astro @@ -0,0 +1,175 @@ +--- +import { env } from "cloudflare:workers"; + +const runtimeEnv = env as unknown as Record; +const posthogKey = + runtimeEnv.PUBLIC_POSTHOG_KEY || import.meta.env.PUBLIC_POSTHOG_KEY || ""; +const posthogUiHost = + runtimeEnv.PUBLIC_POSTHOG_UI_HOST || + import.meta.env.PUBLIC_POSTHOG_UI_HOST || + "https://us.posthog.com"; +--- + + diff --git a/apps/site/src/components/Header.astro b/apps/site/src/components/Header.astro index 008031a3c..edc19f647 100644 --- a/apps/site/src/components/Header.astro +++ b/apps/site/src/components/Header.astro @@ -29,6 +29,8 @@ const desktopLinks = navLinks.filter((link) => link?.sideOnly !== true);