Hi everyone,
Accessibility overlays have a bad reputation — mostly because they're sold as SaaS, phone home to third-party servers, and charge monthly fees for something that should be built-in. Ally is different: self-hosted, MIT, no external requests at runtime.
GitHub: https://github.com/mxmsmnv/Ally
What it does
Adds an accessibility panel to your site's frontend, powered by Sienna (MIT). The JS bundle and OpenDyslexic font ship with the module and are served from your own server — nothing loads from external CDNs at runtime.
Font size adjustment
Dark, light, and high contrast modes
High/low saturation, monochrome
Dyslexia-friendly font (OpenDyslexic, bundled locally)
Highlight links and headings
Letter spacing, line height, bold text
Reading guide, stop animations, big cursor
53 languages with auto-detection from html[lang] or browser settings
Full ProcessWire multi-language support — maps $user->language to the correct locale automatically
Configurable position, offset, button size, and accent color
Skips admin pages and Chrome Lighthouse by default
No build step — prebuilt JS bundle included.
One caveat: the widget is injected via Page::render hook. If you serve pages through ProCache static HTML, the hook doesn't run on cached pages — exclude those pages from ProCache if you need the widget there.
Overlay widgets supplement, but do not replace, accessible markup. Use Ally alongside good semantic HTML, not instead of it.
Requirements: ProcessWire 3.0.200+, PHP 8.1+
MIT License.