{"id":29816960,"url":"https://github.com/yuridevat/search-a11y","last_synced_at":"2025-08-18T10:11:26.639Z","repository":{"id":305386434,"uuid":"1022754546","full_name":"YuriDevAT/search-a11y","owner":"YuriDevAT","description":"Search application to fetch accessibility articles from resources you can rely on.","archived":false,"fork":false,"pushed_at":"2025-07-19T19:08:21.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-19T21:51:50.988Z","etag":null,"topics":["a11y","accessibility","accessibility-tools","aria","semantic-html","wcag","web","webaccessibility"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YuriDevAT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-19T18:49:25.000Z","updated_at":"2025-07-19T19:08:25.000Z","dependencies_parsed_at":"2025-07-19T22:04:23.521Z","dependency_job_id":null,"html_url":"https://github.com/YuriDevAT/search-a11y","commit_stats":null,"previous_names":["yuridevat/search-a11y"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/YuriDevAT/search-a11y","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriDevAT%2Fsearch-a11y","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriDevAT%2Fsearch-a11y/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriDevAT%2Fsearch-a11y/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriDevAT%2Fsearch-a11y/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YuriDevAT","download_url":"https://codeload.github.com/YuriDevAT/search-a11y/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriDevAT%2Fsearch-a11y/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267578003,"owners_count":24110351,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a11y","accessibility","accessibility-tools","aria","semantic-html","wcag","web","webaccessibility"],"created_at":"2025-07-28T20:10:56.532Z","updated_at":"2025-07-28T20:11:02.084Z","avatar_url":"https://github.com/YuriDevAT.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# searchA11y\n\n**A high-performance, unified search engine for discovering content from leading web accessibility specialists.**\n\n![](https://github.com/YuriDevAT/search-a11y/blob/main/frontend/logo.svg)\n\nThis application aggregates articles and blog posts from a curated list of world-renowned accessibility experts, providing a single, powerful interface to search through their collective knowledge. For many of these valuable resources, this tool provides a much-needed search functionality that was previously unavailable.\n\nThe search experience is powered by [**Algolia**](https://www.algolia.com/), delivering instant, typo-tolerant results and an intelligent, user-friendly interface.\n\n\u003e [!IMPORTANT]\n\u003e The application is still in progress and not Screen Reader accessible at its current state.\n\n## Features\n\n- **Unified Search:** Instantly search across articles from multiple authors in one place.\n- **Full-Text Content Search:** Queries are matched against the full content of articles, not just titles.\n- **Intelligent Snippets:** Search results display relevant excerpts from the article content with matching keywords highlighted.\n- **Author Filtering:** Easily refine search results by selecting one or more authors from a filter bar.\n- **Typo-Tolerant:** Get relevant results even if you make a spelling mistake.\n- **Fast \u0026 Responsive:** Built with vanilla JavaScript and Algolia for a lightweight and instantaneous user experience.\n\n## Project Structure\n\nThis project contains two separate applications:\n\n- `frontend/`: A simple, performant user interface built with HTML, CSS, and vanilla JavaScript.\n- `backend/`: A Node.js script responsible for fetching, parsing, and indexing the article data into Algolia.\n\n## Setup and Installation\n\nFollow these steps to get the project running locally.\n\n### 1. Backend Setup (Populating the Data)\n\nThe backend script fetches all the articles and sends them to your Algolia index.\n\n**Prerequisites:**\n\n- Node.js (v18 or higher)\n- An Algolia account (a free plan is sufficient)\n\n**Instructions:**\n\n1.  **Clone the Repository:**\n\n    ```bash\n    git clone https://github.com/your-username/searcha11y.git\n    cd searcha11y/backend\n    ```\n\n2.  **Install Dependencies:**\n\n    ```bash\n    npm install\n    ```\n\n3.  **Set Up Algolia Credentials:**\n\n    - Create a free account at [algolia.com](https://www.algolia.com).\n    - Create a new Application and an Index (e.g., name it `accessibility_articles`).\n    - Find your **Application ID** and **Admin API Key** under the \"API Keys\" section of your dashboard.\n    - In the `backend` folder, create a new file named `.env`.\n    - Copy the following into `.env` and fill in your credentials:\n      ```env\n      ALGOLIA_APP_ID=YOUR_ALGOLIA_APP_ID\n      ALGOLIA_ADMIN_API_KEY=YOUR_SECRET_ADMIN_KEY\n      ALGOLIA_INDEX_NAME=accessibility_articles\n      ```\n\n4.  **Configure Algolia Facets:**\n\n    - In your Algolia dashboard, go to your index -\u003e **Configuration** -\u003e **Facets**.\n    - Under \"Attributes for faceting,\" click **Add an attribute** and add `author`.\n    - Click **Review and save**. This step is required for the author filter to work.\n\n5.  **Run the Indexing Script:**\n    Execute the script from your terminal to fetch all articles and populate your index.\n    ```bash\n    node index.js\n    ```\n    You should see a \"Success!\" message when it's done.\n\n---\n\n### 2. Frontend Setup (Viewing the Application)\n\nThe frontend is a simple website that you can run with any local web server.\n\n1.  **Navigate to the Frontend Directory:**\n\n    ```bash\n    cd ../frontend\n    ```\n\n2.  **Set Up Public API Keys:**\n\n    - In the `frontend` folder, copy the template file: `cp config.template.js config.js`\n    - Open the new `config.js` file.\n    - Fill in your **Application ID** and your public **Search-Only API Key** (found in your Algolia dashboard). **Do not use your Admin API Key here.**\n      ```javascript\n      const ALGOLIA_CONFIG = {\n        ALGOLIA_APP_ID: \"YOUR_ALGOLIA_APP_ID\",\n        ALGOLIA_SEARCH_API_KEY: \"YOUR_SEARCH_ONLY_API_KEY\",\n        ALGOLIA_INDEX_NAME: \"accessibility_articles\",\n      };\n      ```\n\n3.  **Serve the Website:**\n    The easiest way to run the frontend is with a simple server. If you have Node.js installed, you can use the `serve` package.\n    - First, install `serve` globally: `npm install -g serve`\n    - Then, from inside the `frontend` directory, run:\n      ```bash\n      serve\n      ```\n    - Open your browser and navigate to the URL provided (usually `http://localhost:3000`).\n\n## Automation\n\nTo keep the search index up-to-date with new articles, the backend script can be run automatically on a schedule. This repository includes a pre-configured **GitHub Actions** workflow in `.github/workflows/update-index.yml`.\n\nTo enable it:\n\n1.  Push your code to a GitHub repository.\n2.  In your repository's **Settings** -\u003e **Secrets and variables** -\u003e **Actions**, add the three repository secrets from your `.env` file (`ALGOLIA_APP_ID`, `ALGOLIA_ADMIN_API_KEY`, `ALGOLIA_INDEX_NAME`).\n3.  The workflow will now run automatically once per day to keep your index fresh. You can also trigger it manually from the \"Actions\" tab.\n\n## License\n\nThis project is licensed under the ISC License - see the [LICENSE](https://github.com/YuriDevAT/search-a11y/blob/main/LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuridevat%2Fsearch-a11y","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuridevat%2Fsearch-a11y","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuridevat%2Fsearch-a11y/lists"}