What it does
a11y-forge autonomously scans public GitHub repos for WCAG 2.2 AA violations. Paste any repo URL, get an A+–F score in ~2 minutes. Violations grouped by category and ranked by user impact. Includes HTML reports, PDF reports, SVG badges, and screen reader preview simulation.
Inspiration
Web accessibility is a legal requirement (ADA, Section 508, EU Directive). Most open source projects never get audited — manual testing is slow and expensive. Automated tools exist but are either paywalled or require complex CI setup. a11y-forge makes zero-config accessibility scanning accessible to every open source maintainer.
How we built it
Stack: Next.js 16.2 App Router · TypeScript 5 · Tailwind v4 · Octokit v5 (GitHub Git Data API) · OpenAI SDK · @babel/parser (AST) · pdf-lib · vitest + Playwright
Pipeline:
- Fetch repo tree via GitHub API, download up to 150 source files
- Run 12 static WCAG check types (AST parsing, CSS inspection, regex patterns)
- Group violations by category via GPT-5.6; deterministic fallback when no key
- Generate HTML/PDF reports and SVG score badges
Development: Built during OpenAI Build Week 2026. Codex CLI accelerated route scaffolding, check type implementation, responsive UI, debugging (Next.js CSP crash, mobile overflow), and 165 unit tests. GPT-5.6 powers the runtime prioritization layer.
Challenges
- GitHub API tree pagination for large repos (handled via recursive chunked fetching)
- Rate limit handling (20 req/min per IP with
Retry-Afterheader) - CSP crash in Next.js 16.2 with Tailwind v4 (fixed via style-src nonce configuration)
- Mobile viewport overflow on scan results table (fixed via box-sizing reset + overflow-x hidden)
- Deterministic fallback logic for AI grouping when no API key present
Built With
- a11y
- accessibility
- ast
- autonmous
- babel
- codex
- developer-tools
- github-api
- gpt-5.6
- next.js
- node.js
- octokit
- open-source
- openai
- pdf-lib
- playwright
- react
- tailwind-css
- typescript
- vercel
- vitest
- wcag
- web-accessibility
Log in or sign up for Devpost to join the conversation.