diff --git a/apps/start/src/hooks/use-app-context.ts b/apps/start/src/hooks/use-app-context.ts index c00230fb..6bf67d0b 100644 --- a/apps/start/src/hooks/use-app-context.ts +++ b/apps/start/src/hooks/use-app-context.ts @@ -17,5 +17,6 @@ export function useAppContext() { apiUrl: params.apiUrl, dashboardUrl: params.dashboardUrl, isSelfHosted: params.isSelfHosted, + isMaintenance: params.isMaintenance ?? false, }; } diff --git a/apps/start/src/routes/__root.tsx b/apps/start/src/routes/__root.tsx index 33adeb6f..c76afa36 100644 --- a/apps/start/src/routes/__root.tsx +++ b/apps/start/src/routes/__root.tsx @@ -34,6 +34,7 @@ interface MyRouterContext { apiUrl: string; dashboardUrl: string; isSelfHosted: boolean; + isMaintenance: boolean; } export const Route = createRootRouteWithContext()({ diff --git a/apps/start/src/routes/_app.tsx b/apps/start/src/routes/_app.tsx index d06f21d1..2c4139d7 100644 --- a/apps/start/src/routes/_app.tsx +++ b/apps/start/src/routes/_app.tsx @@ -1,5 +1,10 @@ +import { FullPageEmptyState } from '@/components/full-page-empty-state'; import { Sidebar } from '@/components/sidebar'; +import { Button, LinkButton, buttonVariants } from '@/components/ui/button'; +import { useAppContext } from '@/hooks/use-app-context'; +import { cn } from '@/utils/cn'; import { Outlet, createFileRoute, redirect } from '@tanstack/react-router'; +import { ConstructionIcon } from 'lucide-react'; export const Route = createFileRoute('/_app')({ beforeLoad: async ({ context }) => { @@ -11,6 +16,28 @@ export const Route = createFileRoute('/_app')({ }); function AppLayout() { + const { isMaintenance } = useAppContext(); + + if (isMaintenance) { + return ( + + + Check out our status page + + + ); + } + return (
diff --git a/apps/start/src/server/get-envs.ts b/apps/start/src/server/get-envs.ts index f921daef..55a8fb61 100644 --- a/apps/start/src/server/get-envs.ts +++ b/apps/start/src/server/get-envs.ts @@ -8,6 +8,7 @@ export const getServerEnvs = createServerFn().handler(async () => { process.env.DASHBOARD_URL || process.env.NEXT_PUBLIC_DASHBOARD_URL, ), isSelfHosted: process.env.SELF_HOSTED !== undefined, + isMaintenance: process.env.MAINTENANCE === '1', }; return envs;