Skip to main content

Our commitment

Accessibility isn’t a feature.
It’s how we build.

Every major e-learning platform treats accessibility as a compliance checkbox. Most learners with disabilities still get a degraded experience. Eduspera enforces the baseline in CI, scores every course before publish, and ships the accessible version first.

Course score

Ship
Standard

WCAG 2.2 AA

Minimum bar across the entire platform.

Enforced in CI

axe-core

Zero violations or the build doesn’t ship.

Keyboard

100%

Every interactive surface reachable without a mouse.

Screen reader

NVDA · VO

Tested in Firefox + Safari on real pages.

Reduced motion

Respected

Non-essential motion disabled for prefers-reduced-motion.

Contrast

≥ 4.5 : 1

Body + UI meet AA. Defaults aim for AAA.

Accessibility score engine

Every course gets a score. Every issue links back to the fix.

We compute a 0 – 100 score from three measurable signals. Click the badge in the builder and you get the breakdown plus a direct link to each lesson that needs attention.

40 pts

Captions

Ratio of video lessons with ready captions.

40 pts

Alt text

Ratio of images across text lessons with non-empty alt.

20 pts

Colour contrast

Your primary colour must reach 4.5:1 against white or black.

Score bands
RangeBandBehaviour
80 – 100ShipStrong baseline: captions complete, alt text covered, contrast passes.
50 – 79WarnPublishable but flagged — learners will notice gaps.
0 – 49BlockCritical coverage missing. Publishing prompts an override.

For creators

Tools that keep you honest without slowing you down.

Every feature on the builder side is designed so that doing the right thing is the easiest thing. No compliance training required.

In the editor

Alt text is a blocking prompt — and we suggest a starter.

When you drop an image into a lesson, the modal won’t close until you describe it. Gemini reads the picture and drafts a caption so you’re never staring at an empty field.

  • Blocking prompt — alt text is required
  • AI starter description, edit before saving
  • “Decorative” flag for non-content imagery

Video lessons

Captions generated the moment the upload finishes.

Upload an MP4, take a coffee break. When you come back the captions are attached, the transcript is rendered, and the captions-status badge is green.

  • Automatic caption generation
  • Full transcript rendered under the player
  • Captions-status badge: missing / pending / ready

Builder topbar

A live score on every course — click to see exactly what’s missing.

Green, yellow, or red. Each issue links directly to the lesson that caused it. No compliance report PDF, no guessing.

  • 0 – 100 score updated on every save
  • Per-lesson drill-down with fix links
  • Publish warning when score < 50

For learners

A player that respects every body.

Your students can reshape the page in one click. Those choices travel with them across every course they take on Eduspera.

Accessibility toolbar

Eleven switches to make the page work for you.

Theme, font size, dyslexia-friendly font, line spacing, hide images, grayscale, big cursor, read aloud, reading ruler — all native, all saved to your profile.

  • Three themes: light · dark · high-contrast
  • Atkinson Hyperlegible as a dyslexia-friendly option
  • Text-to-speech with your system voice

Video + transcript

Read it, listen to it, or both.

Captions load with the player by default. The full transcript renders as readable HTML underneath so learners can scan, search, or follow along.

  • Captions on by default
  • Transcript rendered as semantic text
  • Keyboard controls + resume from last position

Progress that follows you

Pick up where you left off — on any device.

Each lesson auto-saves as you move through it. Preferences like theme and font size follow your account, so the first visit on a new device feels familiar.

  • Per-lesson progress stored server-side
  • Preferences synced across devices
  • Auto-resume at the exact video second

Built for specific communities

What it means for you.

Accessibility isn’t one thing. Here’s what Eduspera does for the four broad communities we build for every day.

  • Blind or low-vision

    Screen readers get the full story. Our tooling makes sure nothing is hidden.

    • Tested with NVDA on Firefox + VoiceOver on Safari
    • Semantic landmarks and skip-to-content on every page
    • Alt text required on upload, AI-assisted
    • Grayscale mode + dyslexia font + high-contrast theme
  • Deaf or hard-of-hearing

    Every video speaks in text too, by default.

    • Automatic captions on every uploaded video
    • Transcript under the player as readable HTML
    • Visual cues instead of audio-only notifications
    • Multiple caption languages (V2 roadmap)
  • Motor differences

    Every screen works without a mouse, with generous targets.

    • Full keyboard navigation, always
    • Big cursor mode for easier pointing
    • Click targets of 44px minimum
    • No time-limited interactions in lessons
  • Dyslexia, ADHD, or cognitive differences

    Strip the page down, listen instead of read, take your time.

    • Focus mode: hide images, enlarge spacing
    • Read aloud with your system TTS voice
    • Reading ruler that follows your cursor
    • Resume exactly where you left off

How we build

Eight rules we enforce on ourselves.

  1. 01

    Design tokens with enforced contrast

    Every colour pair in globals.css is verified at creation time — no ad-hoc grays that fall under 4.5:1.

  2. 02

    Single `<main id="main-content">` per page

    Skip link targets it, screen readers announce it, landmarks are semantic not decorative.

  3. 03

    Never suppress the focus ring

    2px outline + 2px offset on `:focus-visible`. Keyboard users always know where they are.

  4. 04

    Live regions via `useLiveRegion()`

    Status mutations announce themselves to screen readers — approvals, uploads, score changes, saves.

  5. 05

    Focus traps on every modal

    Tab stays inside, Escape closes, focus returns to the trigger. No orphaned focus states.

  6. 06

    Images with missing alt are blockers

    Not a lint warning, not a nice-to-have. The insert modal refuses to close without a description.

  7. 07

    Server components for landmarks

    Static structure is rendered server-side; client bundles only carry what’s actually interactive.

  8. 08

    `prefers-reduced-motion` is always honoured

    CSS respects the media query; components check it too before animating JS-controlled transitions.

Next step

See your first course’s score before anyone else does.

Start for free, or book a call — we’ll walk through a real course and show you exactly how the score engine works.