diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index 396eacce..a21c016e 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -96,10 +96,8 @@ export default async function Layout(props: { }); } - const { after } = await import('next/server'); - after(() => { - serverServices.analytics.trackPageview(); - }); + // Server-side analytics tracking removed to prevent duplicate/empty events. + // Client-side AnalyticsProvider handles all pageviews. } catch { if (process.env.NODE_ENV !== 'production' || !process.env.CI) { console.warn( diff --git a/app/stats/api/send/route.ts b/app/stats/api/send/route.ts index b0257fd6..5555522b 100644 --- a/app/stats/api/send/route.ts +++ b/app/stats/api/send/route.ts @@ -65,9 +65,28 @@ export async function POST(request: NextRequest) { return NextResponse.json({ status: 'ok' }); } catch (error) { - logger.error('Failed to proxy analytics request', { - error: (error as Error).message, + const errorMessage = error instanceof Error ? error.message : String(error); + const errorStack = error instanceof Error ? error.stack : undefined; + + // Console error to ensure it appears in logs even if logger fails + console.error('CRITICAL PROXY ERROR:', { + message: errorMessage, + stack: errorStack, + endpoint: config.analytics.umami.apiEndpoint, }); - return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 }); + + logger.error('Failed to proxy analytics request', { + error: errorMessage, + stack: errorStack, + }); + + return NextResponse.json( + { + error: 'Internal Server Error', + details: errorMessage, // Expose error for debugging + endpoint: config.analytics.umami.apiEndpoint ? 'configured' : 'missing', + }, + { status: 500 }, + ); } } diff --git a/lib/config.ts b/lib/config.ts index 7bfa28fe..700b3c6b 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -36,7 +36,7 @@ function createConfig() { analytics: { umami: { websiteId: env.UMAMI_WEBSITE_ID, - apiEndpoint: env.UMAMI_API_ENDPOINT, + apiEndpoint: env.UMAMI_API_ENDPOINT || 'https://analytics.infra.mintel.me', enabled: Boolean(env.UMAMI_WEBSITE_ID), }, },