import DevToolbar from '@/components/dev/DevToolbar'; import { EnhancedErrorBoundary } from '@/components/errors/EnhancedErrorBoundary'; import { NotificationIntegration } from '@/components/errors/NotificationIntegration'; import NotificationProvider from '@/components/notifications/NotificationProvider'; import { AuthProvider } from '@/lib/auth/AuthContext'; import { FeatureFlagService } from '@/lib/feature/FeatureFlagService'; import { FeatureFlagProvider } from '@/lib/feature/FeatureFlagProvider'; import { ContainerProvider } from '@/lib/di/providers/ContainerProvider'; import { QueryClientProvider } from '@/lib/providers/QueryClientProvider'; import { initializeGlobalErrorHandling } from '@/lib/infrastructure/GlobalErrorHandler'; import { initializeApiLogger } from '@/lib/infrastructure/ApiRequestLogger'; import { Metadata, Viewport } from 'next'; import Image from 'next/image'; import Link from 'next/link'; import React from 'react'; import './globals.css'; export const dynamic = 'force-dynamic'; export const viewport: Viewport = { width: 'device-width', initialScale: 1, maximumScale: 1, userScalable: false, viewportFit: 'cover', }; export const metadata: Metadata = { title: 'GridPilot - SimRacing Platform', description: 'The dedicated home for serious sim racing leagues. Automatic results, standings, team racing, and professional race control.', themeColor: '#0a0a0a', appleWebApp: { capable: true, statusBarStyle: 'black-translucent', }, openGraph: { title: 'GridPilot - iRacing League Racing Platform', description: 'Structure over chaos. The professional platform for iRacing league racing.', type: 'website', }, twitter: { card: 'summary_large_image', title: 'GridPilot - iRacing League Racing Platform', description: 'Structure over chaos. The professional platform for iRacing league racing.', }, icons: { icon: '/favicon.svg', }, }; export default async function RootLayout({ children, }: { children: React.ReactNode; }) { // Initialize debug tools in development if (process.env.NODE_ENV === 'development') { try { initializeGlobalErrorHandling({ showDevOverlay: true, verboseLogging: true, captureEnhancedStacks: true, }); initializeApiLogger({ logToConsole: true, logBodies: true, logResponses: true, }); } catch (error) { console.warn('Failed to initialize debug tools:', error); } } // Initialize feature flag service from API const featureService = await FeatureFlagService.fromAPI(); const enabledFlags = featureService.getEnabledFlags(); return (
Making league racing less chaotic