diff options
| author | Dhravya Shah <[email protected]> | 2025-01-27 21:02:43 -0700 |
|---|---|---|
| committer | Dhravya Shah <[email protected]> | 2025-01-27 21:02:43 -0700 |
| commit | d2bf8d6623368f9ee1abb7d9add237fe6d003f1c (patch) | |
| tree | 8f98c0793c62c177a45e6ad156b2bad872d6e474 /apps/web/app | |
| parent | change embedding model (diff) | |
| download | supermemory-d2bf8d6623368f9ee1abb7d9add237fe6d003f1c.tar.xz supermemory-d2bf8d6623368f9ee1abb7d9add237fe6d003f1c.zip | |
change embedding model
Diffstat (limited to 'apps/web/app')
| -rw-r--r-- | apps/web/app/components/Reminders.tsx | 1 | ||||
| -rw-r--r-- | apps/web/app/root.tsx | 35 | ||||
| -rw-r--r-- | apps/web/app/routes/pitch.index.tsx | 93 |
3 files changed, 108 insertions, 21 deletions
diff --git a/apps/web/app/components/Reminders.tsx b/apps/web/app/components/Reminders.tsx index 96be74bb..1a3fca49 100644 --- a/apps/web/app/components/Reminders.tsx +++ b/apps/web/app/components/Reminders.tsx @@ -3,7 +3,6 @@ import Markdown from "react-markdown"; import { useNavigate } from "@remix-run/react"; -import { client } from "../lib/utils/api"; import image from "./gradients/gradient1.png"; import { AddMemoryModal } from "./memories/AddMemory"; import { Button } from "./ui/button"; diff --git a/apps/web/app/root.tsx b/apps/web/app/root.tsx index 75485ce6..afedd49b 100644 --- a/apps/web/app/root.tsx +++ b/apps/web/app/root.tsx @@ -29,6 +29,7 @@ import "@fontsource/geist-sans/900.css"; import { QueryClient, QueryClientProvider, useQuery } from "@tanstack/react-query"; import { Toaster } from "sonner"; import posthog from "posthog-js"; +import { PostHogProvider, usePostHog} from 'posthog-js/react' const queryClient = new QueryClient(); @@ -130,10 +131,10 @@ export const loader = async ({ request, context }: LoaderFunctionArgs) => { }); }; -// Use React.memo to memoize the App component const App = React.memo(function App() { const data = useLoaderData<typeof loader>(); const [theme] = useTheme(); + const posthog = usePostHog(); useEffect(() => { if (data.user) { @@ -147,16 +148,16 @@ const App = React.memo(function App() { lastName: data.user.lastName, }); } - }, []); + }, [data.user]); return ( - <html lang="en" data-theme={theme ?? "light"} className={theme ?? ""}> + <html lang="en" data-theme={theme ?? "light"}> <head> <Meta /> <Links /> <NonFlashOfWrongThemeEls ssrTheme={Boolean(data.theme)} /> </head> - <body> + <body className={theme ?? ""}> <Outlet /> <ScrollRestoration /> <Scripts /> @@ -174,23 +175,17 @@ const App = React.memo(function App() { }); export default function AppWithProviders() { - const data = useLoaderData<typeof loader>(); - - const specifiedTheme = useMemo(() => data.theme, [data.theme]); - - const MemoizedApp = React.memo(App); - const MemoizedThemeProvider = useMemo( - () => <ThemeProvider specifiedTheme={specifiedTheme}> - <MemoizedApp /> - </ThemeProvider>, - [specifiedTheme] - ); + const data = useLoaderData<typeof loader>() return ( - <KeyboardProvider> - <QueryClientProvider client={queryClient}> - {MemoizedThemeProvider} - </QueryClientProvider> - </KeyboardProvider> + <PostHogProvider client={posthog}> + <KeyboardProvider> + <QueryClientProvider client={queryClient}> + <ThemeProvider specifiedTheme={data.theme}> + <App /> + </ThemeProvider> + </QueryClientProvider> + </KeyboardProvider> + </PostHogProvider> ); } diff --git a/apps/web/app/routes/pitch.index.tsx b/apps/web/app/routes/pitch.index.tsx new file mode 100644 index 00000000..0e1e10f6 --- /dev/null +++ b/apps/web/app/routes/pitch.index.tsx @@ -0,0 +1,93 @@ +import React, { useEffect } from "react"; + +import posthog from "posthog-js"; +import { Logo } from "~/components/icons/Logo"; +import { Theme, useTheme } from "~/lib/theme-provider"; + +function PitchPage1() { + return ( + <div className="h-screen w-screen flex flex-col justify-center px-4 sm:px-8"> + <Logo className="w-[min(25vw,16rem)] h-[min(25vw,16rem)] mb-4" /> + <div className="w-full max-w-[90vw]"> + <h1 className="text-[min(10vw,12rem)] font-bold tracking-tight leading-none whitespace-nowrap"> + <span className="inline">super</span> + <span className="inline">memory</span> + </h1> + <p className="text-[min(3vw,3rem)] font-medium tracking-tight leading-none mt-8"> + The second brain platform for everyone. <br /> + <span className="text-[min(1.5vw,1rem)] text-gray-500">dhravya shah draft</span> + </p> + </div> + </div> + ); +} + +function PitchPage2() { + return ( + <div className="h-screen w-screen flex flex-col justify-center px-4 sm:px-8"> + <h2 className="text-[min(5vw,4rem)] font-bold tracking-tight leading-none mb-12">current problems</h2> + <div className="grid grid-cols-4 gap-4 max-w-7xl mx-auto w-full h-[60vh] relative"> + <div className="absolute -right-24 top-1/2 -translate-y-1/2 w-48"> + <img + src="https://www.harleytherapy.co.uk/counselling/wp-content/uploads/4624465693_115ce5fa02-400x300.jpg" + alt="Messy desk with papers" + className="rounded-lg shadow-lg" + /> + <div className="font-handwritten text-lg text-blue-600 -rotate-12 mt-2 ml-4"> + current knowledgebase + <svg className="w-12 h-12 -mt-2 ml-2 transform rotate-45" viewBox="0 0 24 24" fill="none" stroke="currentColor"> + <path d="M5 12h14M12 5l7 7-7 7" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round"/> + </svg> + </div> + </div> + + <div className="col-span-2 row-span-2 border rounded-xl p-8 hover:bg-gray-50 transition-colors transform hover:scale-105 hover:rotate-1"> + <h3 className="font-semibold text-3xl mb-4">Knowledge Management</h3> + <p className="text-gray-600 text-lg">Information overload is real. Notes scattered everywhere, bookmarks lost in endless folders, important details buried in email threads. We're building this for Chakshu who's drowning in digital chaos.</p> + </div> + <div className="border rounded-xl p-6 hover:bg-gray-50 transition-colors transform hover:-rotate-2"> + <h3 className="font-semibold text-xl mb-2">Trust & Privacy</h3> + <p className="text-gray-600 text-sm">Developer friends like Kshunya and Siddharth need their data private and secure</p> + </div> + <div className="border rounded-xl p-6 hover:bg-gray-50 transition-colors transform hover:rotate-2"> + <h3 className="font-semibold text-xl mb-2">Enterprise Search</h3> + <p className="text-gray-600 text-sm">Cloudflare's internal knowledge is a maze of confusion</p> + </div> + <div className="col-span-2 border rounded-xl p-6 hover:bg-gray-50 transition-colors transform hover:-rotate-1"> + <h3 className="font-semibold text-2xl mb-3">Digital Chaos</h3> + <p className="text-gray-600">Notes in Notion, bookmarks in Chrome, knowledge in Slack, wisdom in emails... it's everywhere and nowhere</p> + </div> + <div className="border rounded-xl p-6 hover:bg-gray-50 transition-colors transform hover:rotate-1"> + <h3 className="font-semibold text-xl mb-2">Information Anxiety</h3> + <p className="text-gray-600 text-sm">Brent spends hours searching through old emails</p> + </div> + <div className="border rounded-xl p-6 hover:bg-gray-50 transition-colors transform hover:-rotate-1"> + <h3 className="font-semibold text-xl mb-2">Developer Cost</h3> + <p className="text-gray-600 text-sm">Memory APIs are a costly maze of complexity</p> + </div> + </div> + </div> + ); +} + +function Pitch() { + const [theme, setTheme] = useTheme(); + useEffect(() => { + posthog.capture("pitch_viewed"); + setTheme(Theme.LIGHT); + }, []); + + return ( + <div className="snap-y snap-mandatory h-screen w-screen overflow-y-auto"> + <div className="snap-start"> + <PitchPage1 /> + </div> + <div className="snap-start"> + <PitchPage2 /> + </div> + {/* Add more pages here with snap-start class */} + </div> + ); +} + +export default Pitch; |