The 1st decentralized social network for sharing when you're on the toilet. Post a "flush" today! Powered by the AT Protocol.
1import type { Metadata } from 'next';
2import './globals.css';
3import { AuthProvider } from '@/lib/auth-context';
4import { ThemeProvider } from '@/lib/theme-context';
5import ClientOnly from '@/components/ClientOnly';
6import NavigationBar from '@/components/NavigationBar';
7import { Analytics } from "@vercel/analytics/react"
8
9// Configure this layout as having dynamic runtime to fix SSR issues with theme
10export const dynamic = 'force-dynamic';
11
12export const metadata: Metadata = {
13 title: "Flushes",
14 description: 'The world\'s first decentralized social media app for sharing the most universal human experience. Post your flushes and connect with other bathroom enjoyers.',
15 // Add the custom shortcut-version meta tag
16 other: {
17 'shortcut-version': '1.0',
18 },
19 icons: {
20 icon: '/favicon.png',
21 },
22 openGraph: {
23 title: 'Flushes',
24 description: 'The world\'s first decentralized social media app for sharing the most universal human experience. Post your flushes and connect with other bathroom enjoyers.',
25 url: 'https://flushes.app',
26 siteName: 'Flushes',
27 images: [
28 {
29 url: 'https://flushes.app/og-image.png',
30 width: 1200,
31 height: 630,
32 alt: 'Flushes',
33 }
34 ],
35 locale: 'en_US',
36 type: 'website',
37 },
38 twitter: {
39 card: 'summary_large_image',
40 title: 'Flushes',
41 description: 'The world\'s first decentralized social media app for sharing the most universal human experience. Post your flushes and connect with other bathroom enjoyers.',
42 images: ['https://flushes.app/og-image.png'],
43 }
44};
45
46export default function RootLayout({
47 children,
48}: {
49 children: React.ReactNode;
50}) {
51 return (
52 <html lang="en">
53 <head>
54 <link rel="stylesheet" href="https://use.typekit.net/gik3riw.css" />
55 </head>
56 <body>
57 <ClientOnly>
58 <AuthProvider>
59 <ThemeProvider>
60 <header>
61 <ClientOnly>
62 <NavigationBar />
63 </ClientOnly>
64 </header>
65 <main>{children}</main>
66 </ThemeProvider>
67 </AuthProvider>
68 </ClientOnly>
69 <Analytics />
70 </body>
71 </html>
72 );
73}