Skip to content

Commit

Permalink
Merge pull request #43 from e2b-dev/posthog
Browse files Browse the repository at this point in the history
Adds PostHog analytics
  • Loading branch information
mishushakov committed Aug 28, 2024
2 parents e8c80e8 + 596a658 commit fc9bc55
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 34 deletions.
11 changes: 6 additions & 5 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Analytics } from '@vercel/analytics/react'
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
import { PostHogProvider } from './providers'
import './globals.css'

const inter = Inter({ subsets: ['latin'] })
Expand All @@ -17,10 +17,11 @@ export default function RootLayout({
}>) {
return (
<html lang="en">
<body className={inter.className}>
{children}
<Analytics />
</body>
<PostHogProvider>
<body className={inter.className}>
{children}
</body>
</PostHogProvider>
</html>
)
}
16 changes: 15 additions & 1 deletion app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
'use client'

import { useEffect, useState } from 'react'
import { experimental_useObject as useObject } from 'ai/react';
import { experimental_useObject as useObject } from 'ai/react'
import { useLocalStorage } from 'usehooks-ts'
import { usePostHog } from 'posthog-js/react'
import { ArtifactSchema, artifactSchema as schema } from '@/lib/schema'

import { Chat } from '@/components/chat'
Expand Down Expand Up @@ -36,6 +37,8 @@ export default function Home() {
model: 'claude-3-5-sonnet-20240620'
})

const posthog = usePostHog()

const [result, setResult] = useState<ExecutionResult>()
const [messages, setMessages] = useState<Message[]>([])

Expand Down Expand Up @@ -112,6 +115,11 @@ export default function Home() {
})

setChatInput('')

posthog.capture('chat_submit', {
template: selectedTemplate,
model: languageModel.model,
})
}

function addMessage (message: Message) {
Expand All @@ -130,6 +138,11 @@ export default function Home() {
setLanguageModel({ ...languageModel, ...e })
}

function handleGitHubClick () {
window.open('https://github.com/e2b-dev/ai-artifacts', '_blank')
posthog.capture('github_click')
}

return (
<main className="flex min-h-screen max-h-screen">
{
Expand All @@ -145,6 +158,7 @@ export default function Home() {
models={modelsList.models}
languageModel={languageModel}
onLanguageModelChange={handleLanguageModelChange}
onGitHubClick={handleGitHubClick}
apiKeyConfigurable={!process.env.NEXT_PUBLIC_USE_HOSTED_MODELS}
baseURLConfigurable={!process.env.NEXT_PUBLIC_USE_HOSTED_MODELS}
/>
Expand Down
21 changes: 21 additions & 0 deletions app/providers.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// app/providers.js
'use client'
import posthog from 'posthog-js'
import { PostHogProvider as PostHogProviderJS } from 'posthog-js/react'

if (typeof window !== 'undefined' && process.env.NEXT_PUBLIC_ENABLE_POSTHOG) {
posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY ?? '', {
api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST,
person_profiles: 'identified_only'
})
}

export function PostHogProvider({ children }: { children: React.ReactNode }) {
return process.env.NEXT_PUBLIC_ENABLE_POSTHOG ? (
<PostHogProviderJS client={posthog}>
{children}
</PostHogProviderJS>
) : (
children
)
}
4 changes: 3 additions & 1 deletion components/navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export default function NavBar({
onLanguageModelChange,
apiKeyConfigurable,
baseURLConfigurable,
onGitHubClick,
}: {
session: Session | null,
showLogin: () => void,
Expand All @@ -50,6 +51,7 @@ export default function NavBar({
onLanguageModelChange: (config: LLMModelConfig) => void,
apiKeyConfigurable: boolean,
baseURLConfigurable: boolean,
onGitHubClick: () => void,
}) {
return (
<nav className="fixed top-0 left-0 right-0 bg-white">
Expand All @@ -62,7 +64,7 @@ export default function NavBar({
<Link href="https://e2b.dev" className="underline decoration-[#ff8800] decoration-2 text-[#ff8800]" target="_blank">E2B</Link>
</div>
<div className="flex justify-end space-x-4">
<Button variant="outline" onClick={() => window.open('https://github.com/e2b-dev/ai-artifacts', '_blank')}>
<Button variant="outline" onClick={onGitHubClick}>
<GithubIcon className="mr-2 h-4 w-4" /> Star us on GitHub
</Button>
<Separator orientation="vertical" />
Expand Down
4 changes: 4 additions & 0 deletions lib/auth.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useState, useEffect } from 'react'
import { Session } from '@supabase/supabase-js'
import { supabase } from './supabase'
import { usePostHog } from 'posthog-js/react'

interface UserTeam {
id: string;
Expand Down Expand Up @@ -34,6 +35,7 @@ export async function getUserAPIKey (session: Session) {
export function useAuth (setAuthDialog: (value: boolean) => void) {
const [session, setSession] = useState<Session | null>(null)
const [apiKey, setApiKey] = useState<string | undefined>(undefined)
const posthog = usePostHog()

useEffect(() => {
if (!supabase) {
Expand All @@ -53,10 +55,12 @@ export function useAuth (setAuthDialog: (value: boolean) => void) {
if (_event === 'SIGNED_IN') {
setAuthDialog(false)
getUserAPIKey(session as Session).then(setApiKey)
posthog.identify(session?.user.id, { email: session?.user.email })
}

if (_event === 'SIGNED_OUT') {
setApiKey(undefined)
posthog.reset()
}
})

Expand Down
56 changes: 30 additions & 26 deletions package-lock.json

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
"@supabase/auth-ui-shared": "^0.1.8",
"@supabase/supabase-js": "^2.45.1",
"@upstash/ratelimit": "^2.0.1",
"@vercel/analytics": "^1.3.1",
"@vercel/kv": "^2.0.0",
"@xterm/addon-canvas": "^0.7.0",
"@xterm/addon-fit": "^0.10.0",
Expand All @@ -39,6 +38,7 @@
"lucide-react": "^0.396.0",
"next": "14.2.4",
"ollama-ai-provider": "^0.12.0",
"posthog-js": "^1.158.3",
"prismjs": "^1.29.0",
"react": "^18",
"react-dom": "^18",
Expand Down

0 comments on commit fc9bc55

Please sign in to comment.