Portfolio
Clearer link affordances, first-render translations, and keyboard-sized church-history navigation.
Evidence: Representative routes checked with Axe and Lighthouse; checks enforced in CI.
Explore PortfolioWork / Four products, one responsibility
Who gets left out when a product only works one way? This work follows that question through four different products, then shares the repairs and the standard behind them.
Love of neighbor reaches into practical details: whether someone can read the page, operate its controls, understand what changed, and participate. Accessibility belongs in the product definition.
This illustrates a recurring repair pattern. It is not an archived product screen.
Before / the barrier
<span onClick={save}>☆</span>A pointer can activate it, but the control has no useful name, native keyboard behavior, or announced result. The broken pattern is shown as text here.
After / try it
Tab to the button. Press Enter or Space to save; press again to remove it.
The result will appear here and be announced by a screen reader.
The same control supports pointer, touch, and keyboard input. Its pressed state and status message expose what happened without relying on color.
Clearer link affordances, first-render translations, and keyboard-sized church-history navigation.
Evidence: Representative routes checked with Axe and Lighthouse; checks enforced in CI.
Explore PortfolioA skip target, persisted reading choices, reduced motion, higher contrast, and clearer field names and targets.
Evidence: Product tests, a production build, and rendered accessibility checks.
Explore ATXBroSemantic job cards, labeled fields, contextual action names, and live status messages.
Evidence: Accessibility contracts included in the application's test suite.
Explore JobPilotDialog focus handling, tab semantics, keyboard-operable nodes, and text alternatives for visual service graphs.
Evidence: Static and rendered accessibility contracts alongside the production build.
Explore EYEA server that never starts, a broken route, or an unreadable report cannot count as a passing accessibility check. The shared standard makes those failures visible alongside rule violations. Representative routes are checked after a production build.
These are documented repairs and representative checks, not a certification or a claim that every barrier has been removed. Automation cannot judge whether an explanation makes sense or a workflow is exhausting. Keyboard, screen-reader, zoom, contrast, motion, and mobile checks remain part of release review.
The public repository includes the reusable checklist, contribution guidance, and the record of the original pass. Corrections are welcome.