Skip to content

[Feature]: Dynamically Render "Area of Interest" Dropdown in Frontend Form #795

@smrithipiedy

Description

@smrithipiedy

What problem does this solve?

Currently, the "Area of Interest" dropdown in templates/index.html is entirely hardcoded. This creates a disconnect between the frontend UI and the actual project dataset (data/projects.json). As a result, the UI displays interest options that currently have zero projects associated with them in the database. This leads to frustrating "No Projects Found" dead-ends for users who select an available, but empty, category.

Proposed solution

  1. Create a utility function in utils/data_loader.py (similar to get_available_levels()) that parses the JSON dataset and returns a list of all unique interests that actually have projects.
  2. In routes/main_routes.py, pass this dynamically generated available_interests list into the index.html template context.
  3. Update templates/index.html to use a Jinja2 {% for %} loop to render the <select id="interest"> options dynamically based on the real data.

Note: I would like to work on this issue for GSSoC 2026. Please assign it to me!

Alternatives considered

We could manually update the HTML file every time a new project is added to or removed from projects.json. However, this is error-prone, violates the DRY principle, and creates unnecessary friction for open-source contributors who should only have to modify the JSON dataset to add new projects.

Which part of the app does this affect?

Homepage and form

Estimated complexity

Medium (one function and one template change)

Before submitting

  • I searched existing issues and this has not been requested before.
  • This change would benefit contributors beyond my own use case.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions