CoolFace
Apppublic

Exched/DeepSeek_Coder

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
layout.tsx129 linesDownload Raw Back to app
1/* eslint-disable @typescript-eslint/no-explicit-any */2import type { Metadata, Viewport } from "next";3import { Inter, PT_Sans } from "next/font/google";4import { cookies } from "next/headers";5import Script from "next/script";6 7import "@/assets/globals.css";8import { Toaster } from "@/components/ui/sonner";9import MY_TOKEN_KEY from "@/lib/get-cookie-name";10import { apiServer } from "@/lib/api";11import IframeDetector from "@/components/iframe-detector";12import AppContext from "@/components/contexts/app-context";13import TanstackContext from "@/components/contexts/tanstack-query-context";14import { LoginProvider } from "@/components/contexts/login-context";15import { ProProvider } from "@/components/contexts/pro-context";16import { generateSEO, generateStructuredData } from "@/lib/seo";17 18const inter = Inter({19  variable: "--font-inter-sans",20  subsets: ["latin"],21});22 23const ptSans = PT_Sans({24  variable: "--font-ptSans-mono",25  subsets: ["latin"],26  weight: ["400", "700"],27});28 29export const metadata: Metadata = {30  ...generateSEO({31    title: "DeepSite | Build with AI ✨",32    description:33      "DeepSite is a web development tool that helps you build websites with AI, no code required. Let's deploy your website with DeepSite and enjoy the magic of AI.",34    path: "/",35  }),36  appleWebApp: {37    capable: true,38    title: "DeepSite",39    statusBarStyle: "black-translucent",40  },41  icons: {42    icon: "/logo.svg",43    shortcut: "/logo.svg",44    apple: "/logo.svg",45  },46  verification: {47    google: process.env.GOOGLE_SITE_VERIFICATION,48  },49};50 51export const viewport: Viewport = {52  initialScale: 1,53  maximumScale: 1,54  themeColor: "#000000",55};56 57async function getMe() {58  const cookieStore = await cookies();59  const token = cookieStore.get(MY_TOKEN_KEY())?.value;60  if (!token) return { user: null, projects: [], errCode: null };61  try {62    const res = await apiServer.get("/me", {63      headers: {64        Authorization: `Bearer ${token}`,65      },66    });67    return { user: res.data.user, projects: res.data.projects, errCode: null };68  } catch (err: any) {69    return { user: null, projects: [], errCode: err.status };70  }71}72 73export default async function RootLayout({74  children,75}: Readonly<{76  children: React.ReactNode;77}>) {78  const data = await getMe();79 80  // Generate structured data81  const structuredData = generateStructuredData("WebApplication", {82    name: "DeepSite",83    description: "Build websites with AI, no code required",84    url: "https://deepsite.hf.co",85  });86 87  const organizationData = generateStructuredData("Organization", {88    name: "DeepSite",89    url: "https://deepsite.hf.co",90  });91 92  return (93    <html lang="en">94      <head>95        <script96          type="application/ld+json"97          dangerouslySetInnerHTML={{98            __html: JSON.stringify(structuredData),99          }}100        />101        <script102          type="application/ld+json"103          dangerouslySetInnerHTML={{104            __html: JSON.stringify(organizationData),105          }}106        />107      </head>108      <Script109        defer110        data-domain="deepsite.hf.co"111        src="https://plausible.io/js/script.js"112      ></Script>113      <body114        className={`${inter.variable} ${ptSans.variable} antialiased bg-black dark h-[100dvh] overflow-hidden`}115      >116        <IframeDetector />117        <Toaster richColors position="bottom-center" />118        <TanstackContext>119          <AppContext me={data}>120            <LoginProvider>121              <ProProvider>{children}</ProProvider>122            </LoginProvider>123          </AppContext>124        </TanstackContext>125      </body>126    </html>127  );128}129