Barazo default frontend
barazo.forum
1import type { Metadata } from 'next'
2import { Source_Code_Pro } from 'next/font/google'
3import './globals.css'
4import { ThemeProvider } from '@/components/theme-provider'
5import { AuthProvider } from '@/context/auth-context'
6import { AppToastProvider } from '@/context/toast-context'
7import { OnboardingProvider } from '@/context/onboarding-context'
8import { PluginProvider } from '@/context/plugin-context'
9import { SetupGuard } from '@/components/setup-guard'
10import { DynamicFavicon } from '@/components/dynamic-favicon'
11
12const sourceCodePro = Source_Code_Pro({
13 subsets: ['latin'],
14 variable: '--font-source-code',
15 display: 'swap',
16 weight: ['400', '500', '600', '700'],
17})
18
19export const metadata: Metadata = {
20 title: {
21 default: 'Barazo - Community Forums on the AT Protocol',
22 template: '%s | Barazo',
23 },
24 description:
25 'Federated community forums with portable identity, user data ownership, and cross-community reputation.',
26 keywords: ['forum', 'community', 'AT Protocol', 'federated', 'discussions'],
27 authors: [{ name: 'Barazo' }],
28 creator: 'Barazo',
29 metadataBase: new URL('https://barazo.forum'),
30 openGraph: {
31 type: 'website',
32 locale: 'en_US',
33 siteName: 'Barazo',
34 },
35 twitter: {
36 card: 'summary_large_image',
37 creator: '@barazoforum',
38 },
39 robots: {
40 index: true,
41 follow: true,
42 },
43}
44
45export default function RootLayout({
46 children,
47}: Readonly<{
48 children: React.ReactNode
49}>) {
50 return (
51 <html lang="en" className={sourceCodePro.variable} suppressHydrationWarning>
52 <head>
53 <DynamicFavicon />
54 </head>
55 <body className="min-h-screen font-sans antialiased">
56 <ThemeProvider
57 attribute="class"
58 defaultTheme="dark"
59 enableSystem={true}
60 disableTransitionOnChange
61 >
62 <AuthProvider>
63 <AppToastProvider>
64 <OnboardingProvider>
65 <PluginProvider>
66 <SetupGuard>{children}</SetupGuard>
67 </PluginProvider>
68 </OnboardingProvider>
69 </AppToastProvider>
70 </AuthProvider>
71 </ThemeProvider>
72 </body>
73 </html>
74 )
75}