Difficulty: Hard
Type: Feature
Summary
Add pagination, search, and filtering to pass and member management tables so the dashboard remains usable as mock or live datasets grow.
Current Behaviour
The passes and members pages render all returned records in a single table. There is no built-in search, status filter, role filter, pass status filter, or pagination control. This is acceptable for small mock data but will not scale for larger communities.
Expected Behaviour
Operators should be able to search and filter passes and members, view bounded result sets, and navigate through pages without loading or rendering every record at once.
Suggested Implementation
Add query state for search, status, role, and page controls. Start with client-side filtering for mock mode if needed, but design the route contract so server-side filtering can be used later. Extend /api/passes and /api/members to accept query parameters such as search, status, role, limit, and cursor or page. Return a typed paginated response with items, total, and nextCursor or pagination metadata.
Files or Areas Likely Affected
apps/dashboard/app/passes/page.tsx
apps/dashboard/app/members/page.tsx
apps/dashboard/app/api/passes/route.ts
apps/dashboard/app/api/members/route.ts
apps/dashboard/lib/repositories/types.ts
apps/dashboard/lib/repositories/adapters/mock.ts
apps/dashboard/components/
apps/dashboard/test/
Acceptance Criteria
Additional Notes
Keep the first version simple. A cursor-based contract is preferred if live APIs may later return large datasets.
Difficulty: Hard
Type: Feature
Summary
Add pagination, search, and filtering to pass and member management tables so the dashboard remains usable as mock or live datasets grow.
Current Behaviour
The passes and members pages render all returned records in a single table. There is no built-in search, status filter, role filter, pass status filter, or pagination control. This is acceptable for small mock data but will not scale for larger communities.
Expected Behaviour
Operators should be able to search and filter passes and members, view bounded result sets, and navigate through pages without loading or rendering every record at once.
Suggested Implementation
Add query state for search, status, role, and page controls. Start with client-side filtering for mock mode if needed, but design the route contract so server-side filtering can be used later. Extend
/api/passesand/api/membersto accept query parameters such assearch,status,role,limit, andcursororpage. Return a typed paginated response withitems,total, andnextCursoror pagination metadata.Files or Areas Likely Affected
apps/dashboard/app/passes/page.tsxapps/dashboard/app/members/page.tsxapps/dashboard/app/api/passes/route.tsapps/dashboard/app/api/members/route.tsapps/dashboard/lib/repositories/types.tsapps/dashboard/lib/repositories/adapters/mock.tsapps/dashboard/components/apps/dashboard/test/Acceptance Criteria
Additional Notes
Keep the first version simple. A cursor-based contract is preferred if live APIs may later return large datasets.