diff --git a/apps/www/public/_headers b/apps/www/public/_headers new file mode 100644 index 00000000..b7790619 --- /dev/null +++ b/apps/www/public/_headers @@ -0,0 +1,8 @@ +/assets/* + Cache-Control: public, max-age=31536000, immutable + +/fonts/* + Cache-Control: public, max-age=31536000, immutable + +/*.html + Cache-Control: public, max-age=60, must-revalidate diff --git a/apps/www/src/routes/__root.tsx b/apps/www/src/routes/__root.tsx index 1dd88b8d..69dd3328 100644 --- a/apps/www/src/routes/__root.tsx +++ b/apps/www/src/routes/__root.tsx @@ -2,15 +2,20 @@ import { Toaster } from '@gbfm/ui' import { FPSMeter } from '@overengineering/fps-meter' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { createRootRouteWithContext, HeadContent, Outlet } from '@tanstack/react-router' -import { Suspense } from 'react' +import { lazy, Suspense } from 'react' import { VerifyEmailBanner } from '@/components/Auth/VerifyEmailBanner' -import { AuthPromptDialog } from '@/components/AuthPromptDialog' import { ErrorBoundary } from '@/components/ErrorBoundary' import AppShell from '@/components/Layout/AppShell' import { OfflineBanner } from '@/components/OfflineBanner' -import { WelcomeModal } from '@/components/onboarding/WelcomeModal' import { ThemeProvider } from '@/components/ThemeProvider' import { env } from '@/env' + +const AuthPromptDialog = lazy(() => + import('@/components/AuthPromptDialog').then((m) => ({ default: m.AuthPromptDialog })) +) +const WelcomeModal = lazy(() => + import('@/components/onboarding/WelcomeModal').then((m) => ({ default: m.WelcomeModal })) +) export interface MyRouterContext { auth: { user: { @@ -61,8 +66,10 @@ export const Route = createRootRouteWithContext()({ )} - - + + + + diff --git a/infra/www.ts b/infra/www.ts index cf3c666d..d56b4220 100644 --- a/infra/www.ts +++ b/infra/www.ts @@ -3,7 +3,7 @@ import { secret } from './secret' import { isLocal } from './stage' import { vps_gateway } from './vps' -export const www = new sst.aws.StaticSite('gbfm-www', { +export const www = new sst.cloudflare.StaticSiteV2('gbfm-www', { path: './apps/www', build: { command: 'bun run build', @@ -18,7 +18,6 @@ export const www = new sst.aws.StaticSite('gbfm-www', { }, domain: { name: `www.${domain}`, - dns: sst.cloudflare.dns({ proxy: true }), ...($app.stage === 'prod' ? { aliases: [domain] } : {}) } }) diff --git a/sst-env.d.ts b/sst-env.d.ts index 8189062f..f02e8a0c 100644 --- a/sst-env.d.ts +++ b/sst-env.d.ts @@ -99,7 +99,7 @@ declare module "sst" { "value": string } "gbfm-www": { - "type": "sst.aws.StaticSite" + "type": "sst.cloudflare.StaticSite" "url": string } "gbfm_network": {