Skip to content

Add a dashboard search box to the landing page - #171

Merged
ckrew merged 1 commit into
mainfrom
feature/landing-page-dashboard-search
Aug 17, 2026
Merged

Add a dashboard search box to the landing page#171
ckrew merged 1 commit into
mainfrom
feature/landing-page-dashboard-search

Conversation

@ckrew

@ckrew ckrew commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Filters the landing page by dashboard name and description as you type. Names and descriptions are matched differently on purpose.

A name is matched as a plain substring of the whole query, stopwords included, so "guat" finds "Guatemala Hands On 1" and a dashboard actually called "The Basin" stays findable by typing "the".

A description is matched by its significant words only, with common English function words dropped from the query. Requiring "the" to appear would surface nearly every dashboard in the app, which is noise rather than a filter. A query made up entirely of stopwords therefore leaves no description terms and falls back to name matching alone -- the case that makes the feature worth having.

Two supporting choices: query tokens match inside longer words, so "flood" finds "flooding"; and both sides are NFD-normalized before comparison, so "clasificacion" finds "Clasificación".

The matcher lives in its own module and is pure, so it is tested directly rather than only through the rendered page. The box hides itself when there are no dashboards to search, reports "n of m dashboards" while filtering, offers a clear button, and shows a no-matches message instead of an empty page. The New Dashboard tile is hidden while a query is active, since it is not a dashboard and would read as a match.

No backend change: name and description are already in the dashboard metadata.

Filters the landing page by dashboard name and description as you type.
Names and descriptions are matched differently on purpose.

A name is matched as a plain substring of the whole query, stopwords
included, so "guat" finds "Guatemala Hands On 1" and a dashboard actually
called "The Basin" stays findable by typing "the".

A description is matched by its significant words only, with common
English function words dropped from the query. Requiring "the" to appear
would surface nearly every dashboard in the app, which is noise rather
than a filter. A query made up entirely of stopwords therefore leaves no
description terms and falls back to name matching alone -- the case that
makes the feature worth having.

Two supporting choices: query tokens match inside longer words, so
"flood" finds "flooding"; and both sides are NFD-normalized before
comparison, so "clasificacion" finds "Clasificación".

The matcher lives in its own module and is pure, so it is tested directly
rather than only through the rendered page. The box hides itself when
there are no dashboards to search, reports "n of m dashboards" while
filtering, offers a clear button, and shows a no-matches message instead
of an empty page. The New Dashboard tile is hidden while a query is
active, since it is not a dashboard and would read as a match.

No backend change: name and description are already in the dashboard
metadata.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ckrew
ckrew merged commit 365c0f8 into main Aug 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant