Skip to content

Render dashboard headings as a consistent landmark and heading hierarchy #124

Description

@mikewheeleer

Audit and fix landmark and heading semantics across pages

Description

Pages such as src/app/stats/page.tsx, src/app/admin/page.tsx, and src/app/events/page.tsx place their content directly under <main id="main-content"> with a single <h1> and no intermediate <section>/<h2> structure, while the result/status regions are sometimes plain <p> or <section> without accessible names. This issue audits and tightens landmark and heading semantics so the page outline is navigable.

Requirements and context

  • Repository scope: StableRoute-Org/Stableroute-frontend only.
  • Ensure each page has exactly one <h1> and that grouped regions (e.g. the stats tiles, the admin status panel, the events list) are wrapped in <section> with an accessible name (aria-labelledby or aria-label).
  • Verify the single <main id="main-content"> landmark per page and that the skip link from src/app/layout.tsx lands on it.
  • Do not change data fetching, validation, or role="alert" regions; this is a semantics-only pass.
  • Keep the existing visual layout unchanged.

Suggested execution

  • Fork the repo and create a branch
  • git checkout -b a11y/semantics-40-landmarks-headings
  • Implement changes
    • Write code in: the affected pages under src/app (at minimum stats, admin, events).
    • Write comprehensive tests in: add/extend page tests asserting one <h1>, named sections, and the main landmark.
    • Add documentation: note the semantics conventions in README.md.
    • Add JSDoc where helpful.
    • Validate exactly one <h1> and one main landmark per page.
  • Test and commit

Test and commit

  • Run npm run lint, npm test, and npm run build.
  • Cover edge cases: single h1 per page, named sections, main landmark, and skip-link target.
  • Include the full npm test output and a11y notes in the PR description.

Example commit message

a11y: tighten landmark and heading semantics across dashboard pages

Guidelines

  • Minimum 95 percent test coverage for impacted modules.
  • Clear, reviewer-focused documentation.
  • Timeframe: 96 hours.

Community & contribution rewards

  • 💬 Join the StableRoute community on Discord for questions, reviews, and faster merges: https://discord.gg/37aCpusvx
  • ⭐ This is a GrantFox OSS / Official Campaign task and may be rewarded. When your PR is merged you'll be prompted to rate the project — if this issue and the maintainers helped you ship, we'd be grateful for a 5-star rating. Clear questions in Discord and tidy, well-tested PRs are the fastest path to a merge and a reward.

Metadata

Metadata

Assignees

No one assigned

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions