diff --git a/Dockerfile b/Dockerfile index 562b5dc4b..421a4a52b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ WORKDIR /app # --- Install + Build in one stage --- FROM base AS builder # CACHE_BUST: change this value to force a full rebuild (busts Docker layer cache) -ARG CACHE_BUST=12 +ARG CACHE_BUST=13 RUN echo "Cache bust: ${CACHE_BUST}" COPY . . RUN pnpm install --no-frozen-lockfile diff --git a/apps/web/app/[locale]/home/[account]/meetings/page.tsx b/apps/web/app/[locale]/home/[account]/meetings/page.tsx index 76ef7c22b..2241668fb 100644 --- a/apps/web/app/[locale]/home/[account]/meetings/page.tsx +++ b/apps/web/app/[locale]/home/[account]/meetings/page.tsx @@ -23,11 +23,20 @@ export default async function MeetingsPage({ params }: PageProps) { const api = createMeetingsApi(client); - const [stats, recentProtocols, overdueTasks] = await Promise.all([ - api.getDashboardStats(acct.id), - api.getRecentProtocols(acct.id), - api.getOverdueTasks(acct.id), - ]); + let stats = { totalProtocols: 0, thisYearProtocols: 0, openTasks: 0, overdueTasks: 0 }; + let recentProtocols: Awaited> = []; + let overdueTasks: Awaited> = []; + + try { + [stats, recentProtocols, overdueTasks] = await Promise.all([ + api.getDashboardStats(acct.id), + api.getRecentProtocols(acct.id), + api.getOverdueTasks(acct.id), + ]); + } catch (e) { + // Supabase query failed — render with empty data instead of crashing + console.error('Failed to load meetings dashboard:', e); + } return ( diff --git a/apps/web/app/[locale]/home/[account]/verband/page.tsx b/apps/web/app/[locale]/home/[account]/verband/page.tsx index 558674223..3dffdd964 100644 --- a/apps/web/app/[locale]/home/[account]/verband/page.tsx +++ b/apps/web/app/[locale]/home/[account]/verband/page.tsx @@ -22,7 +22,14 @@ export default async function VerbandPage({ params }: PageProps) { if (!acct) return ; const api = createVerbandApi(client); - const stats = await api.getDashboardStats(acct.id); + + let stats = { totalClubs: 0, totalMembers: 0, totalRoles: 0, totalFeeTypes: 0 }; + + try { + stats = await api.getDashboardStats(acct.id); + } catch (e) { + console.error('Failed to load verband dashboard:', e); + } return (