add posthog analytics proxy

This commit is contained in:
MarconLP 2023-04-22 10:05:03 +02:00
parent b2975c96dd
commit cf903425f1
No known key found for this signature in database
GPG key ID: A08A9C8B623F5EA5
4 changed files with 21 additions and 3 deletions

View file

@ -29,8 +29,9 @@ QSTASH_NEXT_SIGNING_KEY=""
# Stripe # Stripe
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="" NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=""
STRIPE_SECRET_KEY="" STRIPE_SECRET_KEY=""
STRIPE_PRICE_ID=""
STRIPE_WEBHOOK_SECRET="" STRIPE_WEBHOOK_SECRET=""
STRIPE_MONTHLY_PRICE_ID=""
STRIPE_ANNUAL_PRICE_ID=""
# crisp.chat # crisp.chat
NEXT_PUBLIC_CRISP_WEBSITE_ID="" NEXT_PUBLIC_CRISP_WEBSITE_ID=""
@ -38,3 +39,5 @@ NEXT_PUBLIC_CRISP_WEBSITE_ID=""
# posthog # posthog
NEXT_PUBLIC_POSTHOG_KEY="" NEXT_PUBLIC_POSTHOG_KEY=""
NEXT_PUBLIC_POSTHOG_HOST="" NEXT_PUBLIC_POSTHOG_HOST=""
NEXT_PUBLIC_POSTHOG_PROXY_HOST="/ioafe"
POSTHOG_PROXY_PATH="ioafe"

View file

@ -2,6 +2,8 @@
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation.
* This is especially useful for Docker builds. * This is especially useful for Docker builds.
*/ */
import { env } from "./src/env.mjs";
!process.env.SKIP_ENV_VALIDATION && (await import("./src/env.mjs")); !process.env.SKIP_ENV_VALIDATION && (await import("./src/env.mjs"));
/** @type {import("next").NextConfig} */ /** @type {import("next").NextConfig} */
@ -46,5 +48,14 @@ const config = {
}, },
], ],
}, },
async rewrites() {
return [
{
source: "/" + env.POSTHOG_PROXY_PATH + "/:path*",
destination: env.NEXT_PUBLIC_POSTHOG_HOST + "/:path*",
},
];
},
}; };
export default config; export default config;

View file

@ -32,6 +32,7 @@ const server = z.object({
STRIPE_WEBHOOK_SECRET: z.string(), STRIPE_WEBHOOK_SECRET: z.string(),
STRIPE_MONTHLY_PRICE_ID: z.string(), STRIPE_MONTHLY_PRICE_ID: z.string(),
STRIPE_ANNUAL_PRICE_ID: z.string(), STRIPE_ANNUAL_PRICE_ID: z.string(),
POSTHOG_PROXY_PATH: z.string(),
}); });
/** /**
@ -44,6 +45,7 @@ const client = z.object({
NEXT_PUBLIC_CRISP_WEBSITE_ID: z.string(), NEXT_PUBLIC_CRISP_WEBSITE_ID: z.string(),
NEXT_PUBLIC_POSTHOG_KEY: z.string(), NEXT_PUBLIC_POSTHOG_KEY: z.string(),
NEXT_PUBLIC_POSTHOG_HOST: z.string(), NEXT_PUBLIC_POSTHOG_HOST: z.string(),
NEXT_PUBLIC_POSTHOG_PROXY_HOST: z.string(),
}); });
/** /**
@ -76,6 +78,8 @@ const processEnv = {
NEXT_PUBLIC_CRISP_WEBSITE_ID: process.env.NEXT_PUBLIC_CRISP_WEBSITE_ID, NEXT_PUBLIC_CRISP_WEBSITE_ID: process.env.NEXT_PUBLIC_CRISP_WEBSITE_ID,
NEXT_PUBLIC_POSTHOG_KEY: process.env.NEXT_PUBLIC_POSTHOG_KEY, NEXT_PUBLIC_POSTHOG_KEY: process.env.NEXT_PUBLIC_POSTHOG_KEY,
NEXT_PUBLIC_POSTHOG_HOST: process.env.NEXT_PUBLIC_POSTHOG_HOST, NEXT_PUBLIC_POSTHOG_HOST: process.env.NEXT_PUBLIC_POSTHOG_HOST,
POSTHOG_PROXY_PATH: process.env.POSTHOG_PROXY_PATH,
NEXT_PUBLIC_POSTHOG_PROXY_HOST: process.env.NEXT_PUBLIC_POSTHOG_PROXY_HOST,
}; };
// Don't touch the part below // Don't touch the part below

View file

@ -13,7 +13,7 @@ import { env } from "~/env.mjs";
// Check that PostHog is client-side (used to handle Next.js SSR) // Check that PostHog is client-side (used to handle Next.js SSR)
if (typeof window !== "undefined") { if (typeof window !== "undefined") {
posthog.init(env.NEXT_PUBLIC_POSTHOG_KEY, { posthog.init(env.NEXT_PUBLIC_POSTHOG_KEY, {
api_host: env.NEXT_PUBLIC_POSTHOG_HOST || "https://app.posthog.com", api_host: env.NEXT_PUBLIC_POSTHOG_PROXY_HOST,
// Enable debug mode in development // Enable debug mode in development
loaded: (posthog) => { loaded: (posthog) => {
if (process.env.NODE_ENV === "development") posthog.debug(); if (process.env.NODE_ENV === "development") posthog.debug();