Accessibility

Access over exclusion, in the interface too.

A platform built to remove barriers cannot put new ones up. Sankofa Code targets WCAG 2.1 Level AA and clears Level AAA on contrast. Here is exactly what that means in practice, including the parts that still need work.

What is in place

Keyboard navigable throughout

Every control is reachable and operable by keyboard alone. A skip link is the first stop, so you can jump past the navigation straight into the lesson.

Visible focus

A three-pixel gold focus ring, offset from the element, appears on whatever you have selected. It meets contrast requirements in both themes.

Screen reader labelling

Every input, editor and icon-only button carries a descriptive label. The theme toggle announces what it will switch to, not just its icon.

Results are announced

Quiz feedback, code output and grading results sit in polite live regions, so a screen reader reads them when they appear instead of leaving you to hunt.

Contrast beyond the standard

Body text measures 15.3:1 in light mode and 15.9:1 in dark, against a WCAG AAA requirement of 7:1. Tinted panels were measured individually, not assumed.

Reduced motion respected

If your system asks for reduced motion, animations and scroll behaviour are switched off rather than merely shortened.

Increased contrast respected

If your system asks for more contrast, secondary text and borders strengthen automatically.

Semantic structure

One h1 per page, headings in order, real landmarks, and lists marked up as lists so a screen reader can skim them.

Text scales

Type and spacing use relative units, so browser zoom and larger default font sizes reflow the page rather than clipping it.

No motion or colour dependence

Nothing is communicated by colour alone. Pass and fail carry a symbol and a word as well as a hue.

What still needs work

Naming these plainly is more useful to you than a claim of perfection.

The code editor is complex

Monaco is the industry-standard editor and has its own screen reader mode, but it remains a heavy component. Every lesson also shows its code as plain, selectable text above the editor, and no lesson requires the editor to be read in order to be understood.

Python takes a moment to wake

The first Python run downloads the language engine. There is a visible status, but on a slow connection it can take several seconds with no other signal.

No formal third-party audit yet

Everything above was tested and measured directly, including contrast ratios computed against real rendered backgrounds. An independent audit by disabled testers has not happened, and that is the honest next step.

Found a barrier?

Tell us what got in your way and we will fix it. Access reports are treated as bugs, not feature requests, and they go to the front of the queue.

Report an access barrier