Skip to content

[FEAT] Add search and filter to GoalTracker widget #289

@shreyamahesh07-git

Description

@shreyamahesh07-git

Summary

The GoalTracker widget currently displays all goals in a flat list with no way to search or filter them. Users with many goals have to scroll through everything to find a specific one. Adding a search input and status filter would make goal management significantly more usable.

Problem Statement

As users add more goals over time, the GoalTracker becomes cluttered and hard to navigate. There is no way to:

  • Find a specific goal by name quickly
  • View only active/in-progress goals
  • View only completed goals
  • Hide goals that are not relevant right now

Proposed Solution

Add a search input and a status filter dropdown/toggle above the goals list in the GoalTracker widget.

Expected Behaviour

Search:

  • Text input above the goals list
  • Filters goals in real time as the user types
  • Matches against goal title (case-insensitive)
  • Shows "No goals match your search" empty state when nothing matches
  • Clear (×) button appears when search has text

Filter tabs:

  • All — shows every goal (default)
  • Active — goals where current < target
  • Completed — goals where current >= target

Combined:

  • Search and filter work together
  • URL does not need to update (in-component state is fine)

UI Mockup

[ 🔍 Search goals... × ]
[ All ] [ Active ] [ Completed ]

Goal 1 ████████░░ 80%
Goal 2 ███░░░░░░░ 30%

Files to Modify

File Change
src/components/GoalTracker.tsx Add search input + filter tabs + filtered list logic

Implementation Notes

  • Pure React useState — no new libraries needed
  • Debounce the search input by 300ms for performance
  • Filter logic runs client-side on already-fetched goals array
  • Empty state should match the style of other widgets

Acceptance Criteria

  • Search input filters goals in real time
  • Clear button resets search
  • All / Active / Completed filter tabs work correctly
  • Search + filter combine correctly
  • Empty state shown when no goals match
  • No new libraries added

I am a GSSoC 2026 contributor and would like to work on this issue. Please assign it to me 🙏

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions