Discover and share accessible products, collections, and stories on a11yhood.
Translation pending
SocialTypeScript · CSSGitHub @a11yhoodOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The a11yhood.org homepage
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
This is the main repository for the A11yhood front end website. A11yhood is a community platform for discovering, reviewing, and discussing open-source assistive technologies. A11yhood serves as a central hub for disabled and non-disabled makers, developers, and contributors to find, use, and contribute to accessibility projects.
To join our community and learn about contributing, go to the community repository. Learn moreRead the full README ↗This is the main repository for the A11yhood front end website. A11yhood is a community platform for discovering, reviewing, and discussing open-source assistive technologies. A11yhood serves as a central hub for disabled and non-disabled makers, developers, and contributors to find, use, and contribute to accessibility projects.
To join our community and learn about contributing, go to the community repository. Learn more
├── src/
│ ├── components/ # React components
│ │ ├── ui/ # shadcn/ui components
│ │ ├── AboutPage.tsx # About page
│ │ ├── AdminDashboard.tsx
│ │ ├── BlogManager.tsx
│ │ ├── CollectionsList.tsx
│ │ ├── ProductDetail.tsx
│ │ └── ... # Other feature components
│ ├── contexts/ # React contexts
│ │ └── AuthContext.tsx
│ ├── hooks/ # Custom hooks
│ ├── lib/ # Utilities and services
│ │ ├── supabase.ts # Supabase client
│ │ ├── api.ts # API client
│ │ ├── scrapers.ts # Web scraping utilities
│ │ ├── types.ts # TypeScript type definitions
│ │ └── utils.ts # Helper functions
│ ├── styles/ # Global styles
│ ├── __tests__/ # Test files
│ │ ├── components/
│ │ ├── accessibility/
│ │ ├── integration/
│ │ └── security/
│ └── App.tsx # Main application
└── public/ # Static assets
Visit https://pixi.prefix.dev for more information.
Choose one option:
# Homebrew
brew install pixi
# Official installer
# Works for Linux/Mac only
curl -fsSL https://pixi.sh/install.sh | bash
Verify installation:
pixi --version
Pixi provides the pinned Node version and the project tasks defined in pixi.toml (pixi task list shows them all). Prefer pixi run <task>; inside pixi shell the equivalent npm scripts also work. See DEVELOPMENT.md for the full local-development guide.
We assume throughout that you are already running pixi.
pixi shell
Clone the repository
git clone https://github.com/a11yhood/a11yhood.github.io.git
cd a11yhood.github.io
Install Node + npm dependencies via Pixi
pixi run install-dev
Set up environment variables
Minimal .env.local for local development:
VITE_DEV_MODE=true
VITE_DEV_USER=admin
Production auth flows require Supabase values:
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
See env.example and env.example.test for full configuration options.
Start the development server
pixi run dev
The application will be available at https://localhost:5173 (Vite picks the next free port if it is taken; the URL is printed in the terminal).
pixi run test # reduced Vitest suite (same as PR preview CI)
pixi run test-full # full suite (integration tests need a running backend)
pixi run lint # ESLint
# Other test commands, from inside `pixi shell`:
npm test # watch mode
npm run test:coverage # with coverage
npm run test:ui # with Vitest UI
npm run test:a11y # accessibility tests
npm run test:a11y:integration # accessibility integration tests (need a backend)
Notes:
VITE_DEV_MODE=true).pixi run build-vite # production bundle only (dist/); skips tests and type-checking
pixi run build-ghpages # reduced tests, type-check, then bundle (what deploys use)
pixi run preview # build the bundle and serve it locally on https://localhost:4173
The project includes:
Each page has a unique, shareable REST-style URL:
/product/{productId}/collection/{collectionId}/blog/{slug}/profile/profile/{username}/adminProducts are automatically scraped from:
Products gathered through such scraping receive an initial review that is based on their stars on their respective platforms. For ravelry, this is simply its rating out of 5 from Ravelry. For Github and Thingiverse, however, there is no such analagous metric. For these, the initial rating is a mapping based on the number of users who have starred the product on the source site. This initial score mapping is exponential and the highest scores (e.g. 5.0) map to 100,000 or more stars on Github, and 1,000 or more stars on Thingiverse (a scale representative of extreme popularity on each respective site). Thus, many products start with ratings that appear low: this is meant to estimate overall community interest rather than act as an indictment on a product's usefulness or quality. Users' ratings of products on the a11yhood site will update this overall rating.
The site is hosted on Vercel. Production deploys are gated behind a version
tag — merging to main alone does not deploy. Every branch or pull request
gets its own preview deployment, and pull requests also run lint, tests, and
accessibility checks in CI.
See VERCEL_DEPLOYMENT.md for domains and DNS, environment variables, social link previews, rollback, and release verification.
The full backend-capable suite is intentionally manual-triggered:
run-full-backend to trigger .github/workflows/backend-tests.yml./run-full-backend; .github/workflows/full-backend-from-comment.yml dispatches the full suite on the PR merge ref.This pattern avoids exposing repository secrets to untrusted fork events while preserving pre-merge backend validation.
This repository uses both custom instructions and custom agents for accessibility-focused development.
Use this setup when you want Copilot to apply repo accessibility standards consistently and delegate focused accessibility tasks to specialized agents.
We welcome contributions! Please:
For contribution norms, review expectations, and release conventions across A11yhood, see the community guide: Community CONTRIBUTING.md.
When opening a pull request in this repository, complete the accessibility checklist in .github/PULL_REQUEST_TEMPLATE.md.
Developed with support from:
In collaboration with:
BSD 3-Clause License - See LICENSE file for details.
A11yhood is an open resource for everyone interested in accessible technology. Join us in making assistive technology more discoverable and accessible!