diff --git a/.env.example b/.env.example index 830caab..07bcad8 100644 --- a/.env.example +++ b/.env.example @@ -29,12 +29,15 @@ QSTASH_NEXT_SIGNING_KEY="" # Stripe NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="" STRIPE_SECRET_KEY="" -STRIPE_PRICE_ID="" STRIPE_WEBHOOK_SECRET="" +STRIPE_MONTHLY_PRICE_ID="" +STRIPE_ANNUAL_PRICE_ID="" # crisp.chat NEXT_PUBLIC_CRISP_WEBSITE_ID="" # posthog NEXT_PUBLIC_POSTHOG_KEY="" -NEXT_PUBLIC_POSTHOG_HOST="" \ No newline at end of file +NEXT_PUBLIC_POSTHOG_HOST="" +NEXT_PUBLIC_POSTHOG_PROXY_HOST="/ioafe" +POSTHOG_PROXY_PATH="ioafe" \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs index fafecf9..5803941 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -2,6 +2,8 @@ * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. * This is especially useful for Docker builds. */ +import { env } from "./src/env.mjs"; + !process.env.SKIP_ENV_VALIDATION && (await import("./src/env.mjs")); /** @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; diff --git a/src/env.mjs b/src/env.mjs index 02dca20..b1a1133 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -32,6 +32,7 @@ const server = z.object({ STRIPE_WEBHOOK_SECRET: z.string(), STRIPE_MONTHLY_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_POSTHOG_KEY: 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_POSTHOG_KEY: process.env.NEXT_PUBLIC_POSTHOG_KEY, 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 diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index bd39139..b70ce29 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -13,7 +13,7 @@ import { env } from "~/env.mjs"; // Check that PostHog is client-side (used to handle Next.js SSR) if (typeof window !== "undefined") { 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 loaded: (posthog) => { if (process.env.NODE_ENV === "development") posthog.debug();