👋 New to open source?
Thanks for considering contributing to Mutiny.
This issue is intentionally beginner-friendly.
If you get stuck, ask questions in the comments.
We're happy to help.
Context
Hosted UI (apps/web) is secondary to CLI, but the landing route should still be usable from the keyboard. Landing already uses <main id="top"> in apps/web/src/app/page.tsx — there is no skip link yet.
Goal
Add a skip-to-content control and a sensible tab focus order on the Hosted landing page without changing layout or brand.
Why it matters
Keyboard and screen-reader users should reach primary content without tabbing through chrome. Small a11y wins are ideal first PRs.
Acceptance criteria
Suggested files
apps/web/src/app/layout.tsx and/or apps/web/src/app/page.tsx
- Minimal styles in
apps/web/src/app/globals.css (e.g. visually-hidden until focus)
Out of scope
- Full WCAG audit, campaign pages, color redesign, new nav IA
Hints
- Pattern: visually hidden link as first focusable element → becomes visible on
:focus.
- Reuse existing
#top / <main> rather than inventing a second landmark.
- Manual check: Tab from address bar; first Tab should reveal skip link; Enter jumps to main.
Difficulty
S · frontend a11y · UI frozen except a11y
Docs
👋 New to open source?
Thanks for considering contributing to Mutiny.
This issue is intentionally beginner-friendly.
If you get stuck, ask questions in the comments.
We're happy to help.
Context
Hosted UI (
apps/web) is secondary to CLI, but the landing route should still be usable from the keyboard. Landing already uses<main id="top">inapps/web/src/app/page.tsx— there is no skip link yet.Goal
Add a skip-to-content control and a sensible tab focus order on the Hosted landing page without changing layout or brand.
Why it matters
Keyboard and screen-reader users should reach primary content without tabbing through chrome. Small a11y wins are ideal first PRs.
Acceptance criteria
#topor equivalentidon<main>)Suggested files
apps/web/src/app/layout.tsxand/orapps/web/src/app/page.tsxapps/web/src/app/globals.css(e.g. visually-hidden until focus)Out of scope
Hints
:focus.#top/<main>rather than inventing a second landmark.Difficulty
S · frontend a11y · UI frozen except a11y
Docs