Exched/DeepSeek_Coder
0
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 