← back to Dear Bubbe Nextjs

app/layout.tsx

254 lines

import type { Metadata, Viewport } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { Providers } from "./providers";

const geistSans = Geist({
  variable: "--font-geist-sans",
  subsets: ["latin"],
});

const geistMono = Geist_Mono({
  variable: "--font-geist-mono",
  subsets: ["latin"],
});

export const viewport: Viewport = {
  width: 'device-width',
  initialScale: 1,
  maximumScale: 1,
  userScalable: false,
  themeColor: '#667eea',
  viewportFit: 'cover'
}

export const metadata: Metadata = {
  title: "Dear Bubbe - Your Brutally Honest AI Jewish Grandma | Get Real Advice",
  description: "Get brutally honest, no-filter advice from Dear Bubbe, your AI Jewish grandmother. Ask about relationships, career, life choices - get the truth with a side of guilt trips and Yiddish wisdom.",
  keywords: [
    "AI Jewish grandmother", 
    "brutally honest advice", 
    "Dear Bubbe", 
    "Yiddish wisdom", 
    "relationship advice", 
    "life coach", 
    "Jewish humor", 
    "AI chat", 
    "grandma advice",
    "authentic advice",
    "no filter advice",
    "tough love",
    "Jewish culture",
    "bubbe chat"
  ],
  authors: [{ name: "Dear Bubbe Team" }],
  creator: "Dear Bubbe",
  publisher: "Dear Bubbe",
  robots: {
    index: true,
    follow: true,
    googleBot: {
      index: true,
      follow: true,
      'max-video-preview': -1,
      'max-image-preview': 'large',
      'max-snippet': -1,
    },
  },
  openGraph: {
    type: 'website',
    locale: 'en_US',
    url: 'https://bubbe.ai',
    title: "Dear Bubbe - Your AI Jewish Grandma",
    description: "Get brutally honest advice from your AI Jewish grandmother. No sugarcoating, just truth with Yiddish wisdom and guilt trips.",
    siteName: "Dear Bubbe",
    images: [
      {
        url: '/bubbe.png',
        width: 1200,
        height: 630,
        alt: 'Dear Bubbe - AI Jewish Grandma',
        type: 'image/png',
      },
    ],
  },
  twitter: {
    card: 'summary_large_image',
    site: '@DearBubbe',
    creator: '@DearBubbe',
    title: "Dear Bubbe - Your Brutally Honest AI Jewish Grandma",
    description: "Get real advice with no filter from your AI Jewish grandmother. Tough love, Yiddish wisdom, and guilt trips included.",
    images: ['/bubbe.png'],
  },
  alternates: {
    canonical: 'https://bubbe.ai',
  },
  category: 'Technology',
  classification: 'AI Chat Application',
  appleWebApp: {
    capable: true,
    statusBarStyle: 'default',
    title: 'Dear Bubbe',
    startupImage: [
      {
        url: '/apple-touch-icon.png',
        media: '(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)',
      },
    ],
  },
  applicationName: "Dear Bubbe",
  referrer: 'origin-when-cross-origin',
  icons: {
    icon: [
      { url: '/favicon.ico', sizes: 'any' },
      { url: '/favicon-16x16.png', sizes: '16x16', type: 'image/png' },
      { url: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' }
    ],
    apple: [
      { url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png' }
    ],
    other: [
      { rel: 'android-chrome', url: '/android-chrome-192x192.png', sizes: '192x192' },
      { rel: 'android-chrome', url: '/android-chrome-512x512.png', sizes: '512x512' }
    ]
  },
  manifest: '/manifest.json',
};

// Structured Data JSON-LD
const structuredData = {
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebApplication",
      "@id": "https://bubbe.ai/#webapp",
      "name": "Dear Bubbe",
      "description": "AI Jewish Grandmother providing brutally honest life advice",
      "url": "https://bubbe.ai",
      "applicationCategory": "LifestyleApplication",
      "operatingSystem": "Web Browser",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "USD"
      },
      "creator": {
        "@type": "Organization",
        "name": "Dear Bubbe Team"
      },
      "sameAs": ["https://twitter.com/DearBubbe"]
    },
    {
      "@type": "Organization",
      "@id": "https://bubbe.ai/#organization",
      "name": "Dear Bubbe",
      "url": "https://bubbe.ai",
      "logo": {
        "@type": "ImageObject",
        "url": "https://bubbe.ai/bubbe.png",
        "width": 512,
        "height": 512
      },
      "sameAs": ["https://twitter.com/DearBubbe"],
      "contactPoint": {
        "@type": "ContactPoint",
        "contactType": "customer service",
        "email": "support@bubbe.ai"
      }
    },
    {
      "@type": "WebSite",
      "@id": "https://bubbe.ai/#website",
      "url": "https://bubbe.ai",
      "name": "Dear Bubbe",
      "description": "Get brutally honest advice from your AI Jewish grandmother",
      "inLanguage": "en-US",
      "publisher": {
        "@id": "https://bubbe.ai/#organization"
      },
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://bubbe.ai/?q={search_term_string}",
        "query-input": "required name=search_term_string"
      }
    },
    {
      "@type": "Person",
      "@id": "https://bubbe.ai/#bubbe",
      "name": "Dear Bubbe",
      "description": "AI Jewish Grandmother character providing life advice",
      "knowsAbout": [
        "Jewish Culture",
        "Life Advice", 
        "Relationships",
        "Family",
        "Career Guidance",
        "Yiddish Language",
        "Traditional Values"
      ],
      "memberOf": {
        "@id": "https://bubbe.ai/#organization"
      }
    }
  ]
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en" suppressHydrationWarning>
      <head>
        {/* Google Analytics */}
        <script async src="https://www.googletagmanager.com/gtag/js?id=G-C754K84WQP"></script>
        <script
          dangerouslySetInnerHTML={{
            __html: `
              window.dataLayer = window.dataLayer || [];
              function gtag(){dataLayer.push(arguments);}
              gtag('js', new Date());
              gtag('config', 'G-C754K84WQP', {
                page_title: 'Dear Bubbe - AI Jewish Grandma',
                send_page_view: true,
                anonymize_ip: true
              });
            `,
          }}
        />
        
        {/* Structured Data */}
        <script
          type="application/ld+json"
          dangerouslySetInnerHTML={{
            __html: JSON.stringify(structuredData),
          }}
        />
        
        {/* Additional SEO Meta Tags */}
        <meta name="language" content="English" />
        <meta name="revisit-after" content="7 days" />
        <meta name="distribution" content="global" />
        <meta name="rating" content="general" />
        <meta name="mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="default" />
        
        {/* Preconnect for Performance */}
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
        <link rel="preconnect" href="https://www.googletagmanager.com" />
        
        {/* DNS Prefetch */}
        <link rel="dns-prefetch" href="https://www.google-analytics.com" />
      </head>
      <body
        className={`${geistSans.variable} ${geistMono.variable} antialiased`}
        suppressHydrationWarning
      >
        <Providers>{children}</Providers>
      </body>
    </html>
  );
}