Difficulty: Intermediate
Type: Feature
Background
The /activity route renders the audit/activity log sourced from mock data and, per the README, live webhook-driven events (member.joined, member.left, pass.activated, pass.expired, guild.updated). As the log grows, rendering the full list in one page becomes impractical and doesn't reflect how a real, long-running guild's activity feed would behave.
Problem
The activity list currently has no pagination or sorting controls. There's no way to jump to older events, control page size, or sort by event type/date, so the page will not scale past a small number of mock entries and gives a poor preview of real production behavior.
Expected outcome
The /activity page supports cursor- or offset-based pagination (Next/Previous or "Load more"), plus sorting by timestamp (newest/oldest) and optional filtering by event type. Pagination state should be reflected in the URL (query params) so links are shareable and refresh-safe.
Suggested implementation
- Add pagination params to the activity data-fetching function/API route (e.g.
?page=, ?pageSize=, ?sort=).
- Update the mock data layer to slice/sort results server-side rather than returning the full array to the client.
- Add UI controls (page size selector, next/prev buttons, sort dropdown) using existing Tailwind patterns.
- Keep this compatible with both
DASHBOARD_STORAGE_MODE=mock and future durable mode by keeping the pagination contract in the API route, not baked into the mock array directly.
Acceptance criteria
Likely affected files/directories
apps/dashboard/app/activity/, apps/dashboard/lib/mock-data.ts, apps/dashboard/app/api/activity/ (or equivalent API route), associated component/test files.
Difficulty: Intermediate
Type: Feature
Background
The
/activityroute renders the audit/activity log sourced from mock data and, per the README, live webhook-driven events (member.joined,member.left,pass.activated,pass.expired,guild.updated). As the log grows, rendering the full list in one page becomes impractical and doesn't reflect how a real, long-running guild's activity feed would behave.Problem
The activity list currently has no pagination or sorting controls. There's no way to jump to older events, control page size, or sort by event type/date, so the page will not scale past a small number of mock entries and gives a poor preview of real production behavior.
Expected outcome
The
/activitypage supports cursor- or offset-based pagination (Next/Previous or "Load more"), plus sorting by timestamp (newest/oldest) and optional filtering by event type. Pagination state should be reflected in the URL (query params) so links are shareable and refresh-safe.Suggested implementation
?page=,?pageSize=,?sort=).DASHBOARD_STORAGE_MODE=mockand futuredurablemode by keeping the pagination contract in the API route, not baked into the mock array directly.Acceptance criteria
/activityno longer renders the entire mock dataset in a single unpaginated list.pnpm --filter @guildpass/dashboard testandpnpm typecheckpass.Likely affected files/directories
apps/dashboard/app/activity/,apps/dashboard/lib/mock-data.ts,apps/dashboard/app/api/activity/(or equivalent API route), associated component/test files.