Skip to content

sortable, filterable services dashboard table with URL-synced state #625

Closed as not planned

Description

@mikewheeleer

Summary

The services dashboard list has no sorting, filtering, or shareable state. Build a data table with column sorting, filtering, pagination, and full URL-state sync so views are shareable and restorable.

Why this matters

A real data view needs sort/filter/paging that survive reload and can be shared. URL-syncing makes state a first-class, testable citizen.

Requirements

  • Column sorting (asc/desc/none), text/enum filtering, and pagination on the services dashboard table.
  • Reflect sort/filter/page in the URL query and restore from it on load.
  • Debounce filter input and keep interactions keyboard-accessible.
  • Empty/filtered-empty states are distinct and clear.

Technical guidance

  • Treat the URL as the source of truth for view state.
  • Memoize derived rows so unrelated state changes don't re-render them.

Edge cases — each must have a test

  • sort a column -> rows reorder and URL updates
  • filter -> rows narrow and URL updates
  • reload with query params -> state restored
  • filtered to empty -> distinct empty state
  • sort is stable for equal keys

Acceptance criteria

  • All requirements and every edge case above implemented and covered by tests
  • New unit and integration tests; existing tests still pass and no regressions
  • Structured, typed errors (no leaked internals; stable codes)
  • npm run lint, npm test, and npm run build all pass locally
  • Code follows the repo's existing conventions; no duplication or dead code
  • Short docs/comments explaining the design and any non-obvious decisions
  • PR description explains the approach and includes Closes #<issue>

Out of scope

  • Server-side sorting/filtering
  • Column reordering/resizing

Rewards

Part of the GrantFox OSS / Official Campaign (FWC26) — this task may be rewarded. PR quality is assessed by AI: depth, correctness under edge cases, meaningful tests, and clean design are what earn the reward. Shallow changes (typos, formatting, trivial docs) do not qualify.

Activity

  1. shobhamerabacha-star commented on Sep 12, 2026

    @shobhamerabacha-star

    Hello! I'd like to work on this issue.

    I would love to take this on. My planned approach:

    • Build sortable, filterable services dashboard table with URL-synced state with clean React/Next.js components, responsive styling, and proper loading/error boundaries.
    • Add component unit tests and ensure zero TypeScript/ESLint warnings.

    Excited to work on this—please assign to me and I'll submit a clean PR shortly!

  2. Rodrigoue9 commented on Sep 21, 2026

    @Rodrigoue9

    Hi maintainers,

    I would like to take ownership of this issue and implement the sortable, filterable services dashboard table with URL-state synchronization.

    Relevant Experience:

    Senior Full-Stack TypeScript/React engineer with extensive experience in Next.js App Router, URL state management (useSearchParams / search params synchronization), accessible UI design, and automated testing (Vitest / React Testing Library).

    Implementation Approach:

    1. URL-State Synchronization (useServicesTableState hook):
      • Treat URL query params as the single source of truth for page, sortBy, sortOrder (asc | desc), and filter.
      • Implement debounced input handling (300ms) for search/filter text to prevent rapid state churn while keeping keyboard interactions fluid.
      • Ensure clean initial hydration and backward/forward browser navigation support.
    2. Table Component & State Architecture:
      • Deliver ServicesDataTable with sortable headers, accessible aria-sort indicators, and pagination controls.
      • Memoize filtered and sorted records (useMemo) with stable sorting for equal keys.
      • Provide clear, distinct views for default empty states vs. "No services found matching filters" state.
    3. Comprehensive Test Suite:
      • Unit & integration tests covering all 5 required edge cases: column sort reordering, filter narrowing, query param restoration on reload, filtered-empty fallback, and sort stability.
      • Validate clean npm run lint, npm test, and npm run build.

    I can deliver a clean, tested PR within 12–24 hours of assignment. Please assign this issue to me!

  3. woahwhattheheck commented on Oct 8, 2026

    @woahwhattheheck

    /claim #625

    I, @woahwhattheheck, affirmatively claim original-contributor credit for PR #649 and request evaluation for any applicable GrantFox OSS / Official Campaign (FWC26) reward and payment if accepted. Please associate this issue-level claim with #649.

  4. mikewheeleer commented on Oct 18, 2026

    @mikewheeleer
    ContributorAuthor

    Closing as part of a repository reset; a fresh set of issues will be opened shortly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions