From 351b3221bbd634c26185b622fafa321de9c6fb7e Mon Sep 17 00:00:00 2001 From: Rorry Date: Tue, 31 Oct 2023 09:48:51 -0300 Subject: [PATCH 1/8] chore(STK-198): create env example file for env vars in Landing package --- packages/landing/.env.example | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/landing/.env.example diff --git a/packages/landing/.env.example b/packages/landing/.env.example new file mode 100644 index 00000000..f712a32a --- /dev/null +++ b/packages/landing/.env.example @@ -0,0 +1 @@ +NEXT_PUBLIC_FATHOM_SITE_ID= From bb83643715e06abcc1f2973f3027c934eb6fcd37 Mon Sep 17 00:00:00 2001 From: Rorry Date: Tue, 31 Oct 2023 09:55:21 -0300 Subject: [PATCH 2/8] infra(STK-198): create Analytics context and installation script --- packages/landing/analytics/constants.ts | 5 ++ packages/landing/analytics/index.ts | 2 + packages/landing/analytics/types.ts | 25 ++++++++++ packages/landing/app/layout.tsx | 21 +++++++-- .../landing/contexts/AnalyticsContext.tsx | 47 +++++++++++++++++++ packages/landing/contexts/index.ts | 1 + packages/landing/providers/Providers.tsx | 9 ++++ packages/landing/providers/index.ts | 1 + 8 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 packages/landing/analytics/constants.ts create mode 100644 packages/landing/analytics/index.ts create mode 100644 packages/landing/analytics/types.ts create mode 100644 packages/landing/contexts/AnalyticsContext.tsx create mode 100644 packages/landing/contexts/index.ts create mode 100644 packages/landing/providers/Providers.tsx create mode 100644 packages/landing/providers/index.ts diff --git a/packages/landing/analytics/constants.ts b/packages/landing/analytics/constants.ts new file mode 100644 index 00000000..fe3ede4d --- /dev/null +++ b/packages/landing/analytics/constants.ts @@ -0,0 +1,5 @@ +export const EVENTS = { + CLICK: { + LAUNCH_APP: "click/launch-app", + }, +}; diff --git a/packages/landing/analytics/index.ts b/packages/landing/analytics/index.ts new file mode 100644 index 00000000..e6869b19 --- /dev/null +++ b/packages/landing/analytics/index.ts @@ -0,0 +1,2 @@ +export * from "./constants"; +export * from "./types"; diff --git a/packages/landing/analytics/types.ts b/packages/landing/analytics/types.ts new file mode 100644 index 00000000..1fd3214c --- /dev/null +++ b/packages/landing/analytics/types.ts @@ -0,0 +1,25 @@ +type PageViewOptions = { + referrer?: string; + url?: string; +}; + +export type EventName = string; + +export type EventOptions = { + _site_id?: string; + _value?: number; +}; + +export interface Fathom { + blockTrackingForMe: () => void; + enableTrackingForMe: () => void; + setSite: (siteId: string) => void; + trackEvent(eventId: string, opts?: EventOptions): void; + trackPageview: (opts?: PageViewOptions) => void; +} + +declare global { + interface Window { + fathom: Fathom; + } +} diff --git a/packages/landing/app/layout.tsx b/packages/landing/app/layout.tsx index 599ffcfd..aead01e2 100644 --- a/packages/landing/app/layout.tsx +++ b/packages/landing/app/layout.tsx @@ -1,8 +1,11 @@ -import { Metadata } from "next"; import localFont from "next/font/local"; +import { Metadata } from "next"; +import Script from "next/script"; import { Navbar } from "@/components"; +import { Providers } from "@/providers"; import { STACKLY_LANDING_URL } from "@/constants"; + import "@/styles/global.css"; const stabilGrotesk = localFont({ @@ -34,6 +37,8 @@ export const metadata: Metadata = { "Stackly is a simple, non-custodial tool that uses the CoW protocol to place recurring swaps based on DCA", }; +const siteId = process.env.NEXT_PUBLIC_FATHOM_SITE_ID; + export default function RootLayout({ children, }: { @@ -42,8 +47,18 @@ export default function RootLayout({ return ( - - {children} +