What needs to be built?
Rewrite the home page from a group card grid into the dashboard widget layout shown in the hi-fi. The page displays a "Dashboard" heading, three stat/action cards in the top row, and event/activity/message widgets in the bottom row. This issue wires together all the individual dashboard card components.
Design reference
Figma link: https://www.figma.com/design/O8reTcdtMARvnTzCtlsvmp/Paso-Food-Co-Op?node-id=407-4433&p=f&t=wZjCheHOOyiYBbH4-0
Documentation
Existing patterns:
Dashboard card components (must be merged before this starts):
src/components/dashboard/total-members-card.tsx
src/components/dashboard/events-this-month-card.tsx
src/components/dashboard/quick-actions-card.tsx
src/components/dashboard/upcoming-events-card.tsx
src/components/dashboard/recent-activity-card.tsx
src/components/dashboard/recent-messages-card.tsx
Official docs:
Technical notes
This issue modifies existing files rather than creating new ones.
home/page.tsx changes:
- Remove group fetching (
getAllGroups, getGroupsByOwner) and greeting logic
- Call
fetchDashboardData() for widget data (already includes eventsThisMonth)
- Pass all data to
HomeContent
home/home-content.tsx changes:
- Remove group card grid and fuzzy search
- Render the dashboard layout:
- "Dashboard" heading in Angkor font, bold
- Top row (3 columns):
TotalMembersCard, EventsThisMonthCard, QuickActionsCard
- Bottom section:
UpcomingEventsCard on the left (wider), RecentActivityCard and RecentMessagesCard stacked on the right
- Quick Actions callbacks: navigate to
/events, /groups, /messages (or open modals if available)
sidebar.tsx change:
- Rename "Home" label to "Dashboard" in the
SIDEBAR_ITEMS array
Grid layout:
- Top row:
grid grid-cols-1 gap-6 lg:grid-cols-3
- Bottom row:
grid grid-cols-1 gap-6 lg:grid-cols-[2fr_1fr] with the right column as a flex column containing both activity and messages cards
Acceptance criteria
What needs to be built?
Rewrite the home page from a group card grid into the dashboard widget layout shown in the hi-fi. The page displays a "Dashboard" heading, three stat/action cards in the top row, and event/activity/message widgets in the bottom row. This issue wires together all the individual dashboard card components.
Design reference
Figma link: https://www.figma.com/design/O8reTcdtMARvnTzCtlsvmp/Paso-Food-Co-Op?node-id=407-4433&p=f&t=wZjCheHOOyiYBbH4-0
Documentation
Existing patterns:
src/app/(protected)/home/page.tsx- current home page (server component), fetches groupssrc/app/(protected)/home/home-content.tsx- current client component, renders group card gridsrc/components/layout/sidebar.tsx- sidebar nav with "Home" labelsrc/actions/event.ts-fetchDashboardData()returnstotalMembers,eventsThisMonth,upcomingEvents,recentActivity,recentMessagesDashboard card components (must be merged before this starts):
src/components/dashboard/total-members-card.tsxsrc/components/dashboard/events-this-month-card.tsxsrc/components/dashboard/quick-actions-card.tsxsrc/components/dashboard/upcoming-events-card.tsxsrc/components/dashboard/recent-activity-card.tsxsrc/components/dashboard/recent-messages-card.tsxOfficial docs:
Technical notes
This issue modifies existing files rather than creating new ones.
home/page.tsxchanges:getAllGroups,getGroupsByOwner) and greeting logicfetchDashboardData()for widget data (already includeseventsThisMonth)HomeContenthome/home-content.tsxchanges:TotalMembersCard,EventsThisMonthCard,QuickActionsCardUpcomingEventsCardon the left (wider),RecentActivityCardandRecentMessagesCardstacked on the right/events,/groups,/messages(or open modals if available)sidebar.tsxchange:SIDEBAR_ITEMSarrayGrid layout:
grid grid-cols-1 gap-6 lg:grid-cols-3grid grid-cols-1 gap-6 lg:grid-cols-[2fr_1fr]with the right column as a flex column containing both activity and messages cardsAcceptance criteria
fetchDashboardData()/events,/groups,/messagesnpm run buildpassesnpm run lintpasses