Accessibility at Tribe
Tribe is a web app, and this is what its code and tests show today. It has a skip link, labeled search and filters, keyboard-operable contact rows, and no horizontal overflow at 375 pixels. A real-browser axe-core scan of ten pages in both themes at two widths first found serious problems (low-contrast text, nested buttons, unnamed buttons, names that dropped their visible text); they were fixed the same day and the rescan reports no violations. Automated scans cannot judge keyboard or screen-reader use, and the app has not been tested with a screen reader. We do not claim a conformance level for the app.

What Tribe supports today
Each line says what the product does, how we know, and where to look. “Not yet tested” means exactly that: we have not checked, and we do not claim it.
Partly supported
Keyboard operation
A skip link jumps to the main content. Control or Command plus K focuses the contact search. Contact rows in the list take Tab focus and open with Enter, the tiles in the relationship health strip open with Enter or Space, and the profile tabs, buttons, and form controls are real buttons and fields. The network graph is a single labeled image, so its individual contacts cannot be reached from the keyboard. Nobody has walked every flow with only a keyboard.
Evidence
- frontend/src/components/layout/Layout.tsx: a Skip to main content link that targets the main region
- frontend/src/components/search/SearchBar.tsx: Control or Command plus K focuses the search box, which carries the label Search contacts
- frontend/src/components/contacts/ContactRow.tsx: role button, tabIndex 0, Enter opens the contact; frontend/src/components/dashboard/RelationshipHeatmap.tsx: tiles open on Enter or Space
- frontend/src/components/network/NetworkCanvas.tsx: the graph is role img with one label, and no node takes focus
- A keyboard-only walkthrough of every flow has not been recorded.
Partly supported
Screen reader landmarks and labels
The page has a skip link, labeled search and filter controls, and an image label on the network graph. An automated axe-core scan of the whole app and of the contact list, dashboard, network, settings, import, and outreach review routes finds no violations in jsdom, and the real-browser scan, after fixes, finds none either. The profile's tabs are plain buttons without tab roles, so they do not announce which tab is selected. Tribe has not been tested with VoiceOver, NVDA, or any other screen reader.
Evidence
- frontend/src/__tests__/accessibility.test.tsx: vitest-axe on the whole app and on six routes (7 tests, in jsdom)
- Real-browser axe-core 4.14.0 scan of 10 pages (contact list, new contact, dashboard, import, network, settings, and a profile's Profile, Timeline, Notes, and Insights tabs) at 375 and 1,440 pixels in light and dark, 10/29/2026 3:28 PM CDT: 0 violations of any level after the day's fixes (60 serious or critical findings before them); regression tests in frontend/src/__tests__/colorContrast.test.ts and the dashboard, import, and contact tests hold the fixes
- 65 lines using role or aria-label in the app's source, counted by search on 10/29/2026
- frontend/src/components/profile/ProfileTabs.tsx: the tabs are buttons with no role tab or aria-selected
- No screen-reader run is on record; docs/testing-strategy.md lists manual screen-reader testing as a plan.
Partly supported
Contrast in light and dark
Tribe's magenta accent measures 5.91 to 1 against white in light mode and 6.69 to 1 against the dark card color in dark mode, both above 4.5 to 1. As small text on the design system's shaded surfaces the kit measured the accent at 4.34 to 1, so this site's links use a slightly darker shade. The rest of the palette comes from the Renkara design system and has not been measured in the app, and the app sets some small text, such as a count beside a group name, in lighter tints that have not been measured. The jsdom scan does not compute contrast. The real-browser scan did, and it found low-contrast text in the dashboard's follow-up queue in dark mode.
Evidence
- Computed on 10/29/2026 from frontend/src/styles/variables.css (--brand-accent 322 80% 41% light, 322 80% 71% dark) against the design system's card colors
- Real-browser axe-core scan, 10/29/2026 3:28 PM CDT: no color-contrast violations on any of the 10 pages in light or dark; frontend/src/__tests__/colorContrast.test.ts computes the secondary text, accent, on-accent, danger text, and starter badge ratios from the tokens (all at least 4.5 to 1)
- No contrast measurement of the app's tints or the full palette is on record.
Partly supported
Reduced motion
The design system's global stylesheet shortens every animation and transition to almost nothing when the system asks for reduced motion, and the outreach review page has its own reduced-motion rule. This was read from the stylesheets and not checked in a browser with the setting turned on.
Evidence
- node_modules/@renkara/design-system/dist/tokens.css: a prefers-reduced-motion rule shortens animation and transition durations
- frontend/src/components/outreach/OutreachOperations.module.css: its own prefers-reduced-motion block
Not yet tested
Text resize and zoom
Nobody has tested Tribe at larger text sizes or browser zoom. Much of the app is styled with fixed small sizes, so large text may crowd or clip.
Partly supported
Mobile and touch
Below 768 pixels the sidebar becomes a menu behind a button and closes when you pick a page. The real-browser scan loaded 10 pages at 375 pixels in both themes and none overflowed sideways. Nobody has used the app on a phone or checked that each page is comfortable there, and the profile's tab row scrolls sideways by design.
Evidence
- frontend/src/components/layout/Layout.tsx: a (max-width: 767px) media query switches the sidebar to a menu
- frontend/src/components/profile/ProfileTabs.tsx: the tab row scrolls horizontally
- Real-browser scan, 10/29/2026 3:28 PM CDT: 40 runs at 375 and 1,440 pixels in light and dark, with no horizontal overflow on any of the 10 pages
- No hands-on phone test is on record.
No WCAG conformance level is claimed for the Tribe app. The Tribe README says the app is built to WCAG 2.1 AA and was tested with VoiceOver, NVDA, and JAWS; no test or record in the repo supports that, and its testing strategy lists manual screen-reader testing as a plan. The repo's accessibility test is an automated axe-core scan in jsdom of the app and six routes, which cannot judge color contrast or real keyboard and screen-reader use. On 10/29/2026 the running app was also scanned with axe-core 4.14.0 in a real browser, on 10 pages at 375 and 1,440 pixels in light and dark (40 runs). That scan first found 60 serious or critical findings (contrast, nested interactive controls, names that dropped visible text, an unnamed button, target size) and, after the fixes, rerun at 3:28 PM CDT, found 0 serious findings and no findings of any other level; it cannot judge keyboard or screen-reader use either. The claims below were read from the code and tests on 10/29/2026. This site's own pages are scanned by the kit's axe-core run in a real browser at 375 and 1,440 pixels in light and dark.
More about Tribe
Keys that work today
Everything else is a click, a tap, or a form field.
| Control or Command plus K | Focus the contact search |
|---|---|
| Tab, then Enter | Open a contact from the list |
| Enter or Space | Open a contact from the relationship health strip |
| Skip link | Jump past the sidebar to the main content |
What does not work yet
- The real-browser scan covers 10 pages; the Commitments and Files tabs, the outreach review page, the merge wizard, and the briefing panel are not mounted or not scanned.
- Tribe has not been tested with a screen reader, and the jsdom axe test does not cover a profile.
- No one has walked the app using only a keyboard, and the network graph's contacts cannot be reached by keyboard.
- The profile tabs do not announce which one is selected.
- The automated tests cannot check focus order or real screen-reader output.
- Larger text sizes and the Increase Contrast setting are untested, and the app was not checked by hand on a phone.
How this site is built and checked
This site targets WCAG 2.2 level AA. That is a target we build and test toward, not a certification, and no one has audited it for conformance.
Structure
A skip link, labeled landmarks (header, navigation, main, footer), one h1 per page, and headings that do not skip levels.
Keyboard and focus
Links and buttons are native elements, so they work from the keyboard. Focus is drawn as a visible ring, and the menu closes with Escape.
Contrast
Text meets 4.5 to 1 in both the light and dark themes, checked against the stylesheet by the test suite.
Motion
Transitions and animation switch off when your system asks for reduced motion.
Small screens and zoom
Layouts hold at 375 pixels wide with no sideways scrolling, text resizes with the browser, and touch targets are at least 44 pixels.
Automated scan
Every page is scanned with axe-core at 375 and 1440 pixels in light and dark, and the checks fail on any serious or critical violation. Automated tools find only part of the problems, so this is a floor, not proof.
Images
Every product screenshot has a text description and comes in a light and a dark version that follows your theme.
Your theme choice
The theme follows your system setting until you pick one with the button in the header.
Tell us what is in your way
If something here or in Tribe does not work for you, write to Renkara Media Group. Say what you were doing, what you used, and what happened, and a person will answer.
Statement last reviewed 10/29/2026.