Skip to content

Add project- and role-based filtering to Contributors page #497

@LukasWallrich

Description

@LukasWallrich

Summary

The current Contributors page (tenzing.md) presents a comprehensive, static list of all FORRT contributors. We want to enhance it by allowing users to filter dynamically by project (e.g., /contributors?project=glossary) and optionally by role (e.g., /contributors?role=project-lead) — without losing search-engine visibility of individual names.

This feature will require adjustments to both the data generation script and the website layout.

Goals / Deliverables

Data generation enhancements

Extend the existing tenzing.py script so that the generated Markdown includes lightweight HTML attributes or data tags per contributor entry:

  • Balazs Aczel contributed to ...
  • Ensure each project and role are normalized (lowercase, hyphen-safe) for consistent filtering.

    Keep the generated file fully static (for SEO), but semantically structured for client-side filtering.

    Website display logic

    On page load, check for project and/or role parameters in the URL.

    If parameters are present:

    Hide the full contributor list.

    Dynamically render a focused list of contributors matching the filter, e.g.:

    Project: Glossary

    Balazs Aczel — Project co-lead
    Maria Lopez — Writing

    If no parameters are provided, display the full unfiltered overview (contributors → projects → roles), preserving the current hierarchy.

    Optional UI features

    Add basic dropdowns or buttons for project and role selection that update the URL (?project= / ?role=) without reloading.

    Maintain accessibility and crawlability — all data must exist in the static HTML before filtering.

    Technical constraints

    No reduction in search engine indexability (all names and projects remain visible in the static HTML).

    The dynamic filtering is purely client-side (no new API or server-side filtering).

    Should work seamlessly with existing Hugo build output and templating.

    Deliverables checklist

    Updated tenzing.py script outputting data-projects and data-roles attributes.

    Modified template (tenzing_template.md) with placeholders ready for those attributes.

    JS file for URL parameter parsing and DOM filtering logic.

    Verified filtered view layout (project-centric, role-centric).

    Maintained full SEO visibility.

    Success criteria

    Visiting /contributors?project=glossary displays only contributors involved in “Glossary” with clean name–role pairs.

    Visiting /contributors?role=project-lead lists all contributors serving as project leads, across projects.

    Viewing /contributors without parameters shows the full static list.

    Search engines can still index all contributor names and text.

    Metadata

    Metadata

    Assignees

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions