@a.nemreen/a11y

Framework-agnostic accessibility tools widget — profiles, readable experience, visual filters, optional self-hosted dashboard. Works with Angular, React, Vue, and plain HTML.
1,548
Install
npm install @a.nemreen/a11y
Latest Version:0.3.1
License:MIT
Last Updated:Sep 24, 2026
Links: npm
Maintainer: a.nemreen

a11y — Accessibility Tools

@a.nemreen/a11y

Framework-agnostic Accessibility Tools widget — quick profiles, readable experience controls, visual filters, and a reading mask.
Works with Angular, React, Vue, and plain HTML. Zero framework peers.
Optional self-hosted dashboard. Always free. Unlimited websites.
By Ahmed Nemreen · Made in KSA

npm version npm downloads zero dependencies MIT license TypeScript live demo self-hosted dashboard


Install the widget (npm)

npm install @a.nemreen/a11y
import { Accessibility } from '@a.nemreen/a11y';
import '@a.nemreen/a11y/styles.css';

Accessibility.mount({
  position: 'end', // end | start | left | right
  stack: 0,
  locale: 'auto',  // auto | ar | en
});

Mount once at the application root — same API in Angular, React, Vue, and plain HTML. Omit the control panel options and the shelf stays the full catalog, with no network calls.

Headless (controller only)

const a11y = Accessibility.mount({ headless: true });
a11y.setMode('high-contrast', true);

Control panel (optional, self-hosted)

The dashboard is not a paid SaaS. Install it from npm / Docker Hub — no GitHub access required. Pair each app with a public siteKey. Always free — unlimited websites, no fees, no caps.

Control panel dashboard with users, shelf opens, and top tools

What you get

Shelf Hide or show any tool per website. Style the floating button (color, icon, shape, size). Add custom links you can disable or remove.
Stats Unique users, shelf opens, tool uses, top tools. Filter All websites or one site.
Sites Many apps, one panel. Each site key is public, like a GA measurement ID.
Users Admin / editor / viewer. First visit is an install wizard (username, email, password).

Shelf editor with floating button color, icon, and shape

Server requirements

Docker (recommended): Docker Engine; 1 CPU / 512 MB RAM (1 GB comfortable); ~200 MB image plus a SQLite volume; port 8787 or 80/443 behind TLS; outbound Docker Hub on first pull. Sites that embed the widget must reach this URL. No extra database, Redis, or mailer.

Without Docker: Node.js 18+, npm, and native build tools (python3, make, g++ / Xcode CLT). Same port and disk.

Install the dashboard (Docker Hub)

You do not need a Dockerfile or a git clone. Docker pulls nemreen/a11y-panel:

docker run -d --name a11y-panel --restart unless-stopped \
  -p 8787:8787 \
  -v a11y-panel-data:/data \
  -e PORT=8787 \
  -e DATA_DIR=/data \
  -e A11Y_PANEL_ORIGIN=http://YOUR_SERVER:8787 \
  nemreen/a11y-panel:latest

Open http://YOUR_SERVER:8787. The first visit is the wizard. Create a website, copy the snippet:

Accessibility.mount({
  panelUrl: 'http://YOUR_SERVER:8787',
  siteKey: 'a11y_site_…',
});

Install snippet with panelUrl and siteKey

No Docker: npx @a.nemreen/a11y-panel. Package: @a.nemreen/a11y-panel.

Use a different siteKey per app. Same panelUrl. Localhost origins are allowed automatically during development.

Sites page with site key and allowed origins


Features

  • Profiles: epilepsy-safe, visually-impaired, cognitive-disability, motor-impaired, colorblind, dyslexia-friendly, adhd-friendly
  • Adjust: font size, dyslexia font, highlight titles/links, reading mask, pause motion, text align, line/letter/word spacing
  • Filters: boost contrast, monochrome, high contrast, high/low saturation, deuteranopia
  • AR / EN UI, RTL-aware panel, localStorage persistence, live region announcements
  • Shelf follows the host page theme (data-theme="dark", .dark, color-scheme)
  • Floating button cosmetics from the dashboard (color, icon, shape, size)
  • Optional control panel: wizard, shelf, stats, unlimited sites, always free

Demo

https://nemreen.info/a11y

Architecture

arc42 (what to document) and C4 (how to visualize it) — goals, context, building blocks, runtime, decisions, and known risks.

License

MIT © Ahmed Nemreen · Made in KSA

Related Packages

a11y-checker

Accessibility scanner for humans and AI agents: CLI, MCP server and skill that r...

36,659 117
@accesslint/storybook-addon

Catch accessibility violations in your Storybook stories as you develop

3,861 13
@bauer-group/accessibility-widget-vue

Vue 3 Wrapper für das BAUER GROUP Accessibility Widget.

1,236 0
portfolio-github-integration

Browser-native library to fetch GitHub repositories and custom metadata for dyna...

1,360
@bauer-group/accessibility-widget-nuxt

Nuxt Plugin für das BAUER GROUP Accessibility Widget.

1,205 0

Version History

Version Released License
0.3.1 MIT
0.3.0 MIT
0.2.0 MIT
0.1.6 MIT
0.1.3 MIT