<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Khushboo Parmar</title>
    <description>The latest articles on DEV Community by Khushboo Parmar (@khushboo_parmar).</description>
    <link>https://dev.to/khushboo_parmar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3810857%2F4fe5cc0d-efe1-442e-84f1-d10130713128.JPG</url>
      <title>DEV Community: Khushboo Parmar</title>
      <link>https://dev.to/khushboo_parmar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khushboo_parmar"/>
    <language>en</language>
    <item>
      <title>I built an accessible gaming platform that profiles players through observation instead of settings menus</title>
      <dc:creator>Khushboo Parmar</dc:creator>
      <pubDate>Mon, 30 Mar 2026 02:55:06 +0000</pubDate>
      <link>https://dev.to/khushboo_parmar/i-built-an-accessible-gaming-platform-that-profiles-players-through-observation-instead-of-settings-3g1</link>
      <guid>https://dev.to/khushboo_parmar/i-built-an-accessible-gaming-platform-that-profiles-players-through-observation-instead-of-settings-3g1</guid>
      <description>&lt;p&gt;Every accessible game asks players to configure their own needs. But players who are newly disabled, new to gaming, or unfamiliar with accessibility terminology can't configure what they don't know they need.&lt;/p&gt;

&lt;p&gt;I call this the &lt;strong&gt;configuration barrier&lt;/strong&gt; — and I built &lt;a href="https://observeplay-jf9e.vercel.app/" rel="noopener noreferrer"&gt;ObservePlay&lt;/a&gt; to eliminate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;ObservePlay watches how you play during a 5-stage onboarding session and infers your accessibility profile automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stage 1: Welcome (no questionnaire)
Stage 2: Input Detection (9 input methods detected)
Stage 3: Visual Assessment (text size + contrast thresholds)
Stage 4: Audio Assessment (3-tone hearing classification)
Stage 5: Profile Review (accept or override)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The inferred profile drives automatic adaptation of game feedback, timing, sizes, contrast, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js 16 (App Router) + React 19&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; TypeScript (~25,000 lines)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio:&lt;/strong&gt; Web Audio API (real-time synthesis, no audio files)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ML:&lt;/strong&gt; TensorFlow.js (client-side emotion detection via WASM)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL + pgvector&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time:&lt;/strong&gt; WebSocket&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline:&lt;/strong&gt; Service Worker + IndexedDB (PWA)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Vitest + fast-check (property-based testing)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;11 service modules connected through a typed event bus:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Profile Learner ──┐
Accessibility Copilot ──┤
Emotion Engine ──┤
NL Controller ──┤
Audio Narrator ──┼──&amp;gt; Event Bus ──&amp;gt; WebSocket Hub ──&amp;gt; Client
AI Companion ──┤
Game Generator ──┤
Research Analyzer ──┤
Consent Manager ──┤
Copilot Adaptation Learner ──┤
Companion Learning ──┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Design Decisions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Web Audio API for sound synthesis&lt;/strong&gt; — all game sounds are synthesized in real time. No audio files to load, no network dependency. Four distinct tones (flip: 600Hz, match: C5-E5, mismatch: 200Hz, win: C5-E5-G5-C6).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deterministic profile inference&lt;/strong&gt; — same observation data always produces the same profile. Validated by property-based tests across 10,000 generated inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client-side emotion processing&lt;/strong&gt; — TensorFlow.js runs facial expression analysis in the browser via WASM. No raw video ever leaves the device. This was a non-negotiable privacy decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Progressive Web App&lt;/strong&gt; — service worker caches game assets and profiles for offline play. Cache-first for assets, network-first for API calls, IndexedDB for structured data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adaptation Rules
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Hearing-based feedback selection&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hearingCapability&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Disable audio, enable screen flash + text indicators + card labels&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hearingCapability&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;partial&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Enable audio AND enhanced visual feedback&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Standard audio feedback&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Card size computation&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cardSize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;minReadableTextSize&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;clickPrecision&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Testing Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Test files&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test cases&lt;/td&gt;
&lt;td&gt;638&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pass rate&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Execution time&lt;/td&gt;
&lt;td&gt;2.60s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lighthouse accessibility&lt;/td&gt;
&lt;td&gt;96/100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GAG compliance&lt;/td&gt;
&lt;td&gt;86% (79/92)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simulated profiles tested&lt;/td&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adaptation conflicts found&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Try It + Give Feedback
&lt;/h2&gt;

&lt;p&gt;I'm writing a research paper on this for ACM TACCESS and need community feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try the app:&lt;/strong&gt; &lt;a href="https://observeplay-jf9e.vercel.app/" rel="noopener noreferrer"&gt;https://observeplay-jf9e.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Share feedback (anonymous, 5 min):&lt;/strong&gt; &lt;a href="https://forms.gle/GEt36zsUcUhnGBULA" rel="noopener noreferrer"&gt;https://forms.gle/GEt36zsUcUhnGBULA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Especially interested in hearing from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gamers with disabilities — did it correctly detect your needs?&lt;/li&gt;
&lt;li&gt;Accessibility professionals — what's missing?&lt;/li&gt;
&lt;li&gt;Developers — what would you architect differently?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is open-source. Contributions welcome.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What do you think about observation-based profiling as an alternative to manual accessibility configuration? Would love to hear your thoughts in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>gaming</category>
      <category>nextjs</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Catch issues before users notice 🚀 #Accessibilty</title>
      <dc:creator>Khushboo Parmar</dc:creator>
      <pubDate>Mon, 23 Mar 2026 02:22:27 +0000</pubDate>
      <link>https://dev.to/khushboo_parmar/catch-issues-before-users-notice-accessibilty-1gho</link>
      <guid>https://dev.to/khushboo_parmar/catch-issues-before-users-notice-accessibilty-1gho</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/khushboo_parmar/ai-powered-accessibility-from-hype-to-real-world-wins-c1m" class="crayons-story__hidden-navigation-link"&gt;AI-Powered Accessibility: From Hype to Real-World Wins&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/khushboo_parmar" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3810857%2F4fe5cc0d-efe1-442e-84f1-d10130713128.JPG" alt="khushboo_parmar profile" class="crayons-avatar__image" width="800" height="1422"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/khushboo_parmar" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Khushboo Parmar
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Khushboo Parmar
                
              
              &lt;div id="story-author-preview-content-3386659" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/khushboo_parmar" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3810857%2F4fe5cc0d-efe1-442e-84f1-d10130713128.JPG" class="crayons-avatar__image" alt="" width="800" height="1422"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Khushboo Parmar&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/khushboo_parmar/ai-powered-accessibility-from-hype-to-real-world-wins-c1m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 23&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/khushboo_parmar/ai-powered-accessibility-from-hype-to-real-world-wins-c1m" id="article-link-3386659"&gt;
          AI-Powered Accessibility: From Hype to Real-World Wins
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webaccessibility"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webaccessibility&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/inclusivedesign"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;inclusivedesign&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cicd"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cicd&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devto"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devto&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/khushboo_parmar/ai-powered-accessibility-from-hype-to-real-world-wins-c1m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/khushboo_parmar/ai-powered-accessibility-from-hype-to-real-world-wins-c1m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webaccessibility</category>
      <category>inclusivedesign</category>
      <category>cicd</category>
      <category>devto</category>
    </item>
    <item>
      <title>AI-Powered Accessibility: From Hype to Real-World Wins</title>
      <dc:creator>Khushboo Parmar</dc:creator>
      <pubDate>Mon, 23 Mar 2026 02:19:15 +0000</pubDate>
      <link>https://dev.to/khushboo_parmar/ai-powered-accessibility-from-hype-to-real-world-wins-c1m</link>
      <guid>https://dev.to/khushboo_parmar/ai-powered-accessibility-from-hype-to-real-world-wins-c1m</guid>
      <description>&lt;p&gt;Accessibility isn’t just a checkbox—it’s a commitment to making the web usable for everyone. But with AI tools flooding the market, how do we separate hype from reality?&lt;/p&gt;

&lt;p&gt;Here’s a practical approach:&lt;br&gt;
    1. Start with audits: Use tools like axe and Lighthouse to identify accessibility issues early. Automated tests catch ~30–50% of problems before they reach production.&lt;br&gt;
    2. Leverage AI smartly: AI plugins can suggest fixes for color contrast, missing alt texts, and semantic errors. But they aren’t perfect—human review is still critical.&lt;br&gt;
    3. Integrate in CI/CD: Don’t wait until launch. Run accessibility tests automatically on every pull request. Catch issues when they’re easiest to fix.&lt;br&gt;
    4. Real examples:&lt;br&gt;
    •AI identified missing ARIA labels in a React component.&lt;br&gt;
    •Lighthouse audit revealed skipped heading hierarchy issues on multiple pages.&lt;/p&gt;

&lt;p&gt;✅ Outcome: Reduced accessibility debt, faster development cycles, and improved inclusivity.&lt;/p&gt;

&lt;p&gt;💡 Tip: Accessibility isn’t a one-time fix. Treat it as a continuous improvement process, powered by AI but guided by humans.&lt;/p&gt;

&lt;p&gt;AI-Powered Accessibility: Fix Issues Before Users Notice&lt;br&gt;
Accessibility is no longer optional. AI tools can help catch issues automatically—but knowing how to integrate them makes all the difference.&lt;/p&gt;

&lt;p&gt;💡 How it works:&lt;br&gt;
    1.  Visits your page automatically&lt;br&gt;
    2.  Runs accessibility checks (axe-core)&lt;br&gt;
    3.  Reports violations before they reach production&lt;/p&gt;

&lt;p&gt;Combine with AI suggestions for color contrast, alt texts, and semantic fixes. The result? Less accessibility debt and more inclusive apps&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6wtk9c12cbo7e88n4rut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6wtk9c12cbo7e88n4rut.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
`javascript
// Example: Automated axe check in CI/CD pipeline
import { configureAxe } from 'axe-core';
import { runAxe } from 'axe-puppeteer';
import puppeteer from 'puppeteer';

(async () =&amp;gt; {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  const results = await new runAxe(page).analyze();
  console.log('Accessibility Violations:', results.violations);

  await browser.close();
})();
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>webaccessibility</category>
      <category>inclusivedesign</category>
      <category>cicd</category>
      <category>devto</category>
    </item>
    <item>
      <title>Minor issues—missing labels, poor contrast, or bad keyboard navigation—compound over time. Left unchecked, they make your app unusable for people with disabilities and expensive to fix later.
The solution? Build accessibility into your workflow</title>
      <dc:creator>Khushboo Parmar</dc:creator>
      <pubDate>Tue, 17 Mar 2026 03:02:37 +0000</pubDate>
      <link>https://dev.to/khushboo_parmar/minor-issues-missing-labels-poor-contrast-or-bad-keyboard-navigation-compound-over-time-left-36cd</link>
      <guid>https://dev.to/khushboo_parmar/minor-issues-missing-labels-poor-contrast-or-bad-keyboard-navigation-compound-over-time-left-36cd</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/khushboo_parmar" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3810857%2F4fe5cc0d-efe1-442e-84f1-d10130713128.JPG" alt="khushboo_parmar"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/khushboo_parmar/accessibility-debt-the-hidden-technical-debt-in-modern-web-applications-hco" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Accessibility Debt: The Hidden Technical Debt in Modern Web Applications&lt;/h2&gt;
      &lt;h3&gt;Khushboo Parmar ・ Mar 17&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#a11y&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#opensource&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>a11y</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Accessibility Debt: The Hidden Technical Debt in Modern Web Applications</title>
      <dc:creator>Khushboo Parmar</dc:creator>
      <pubDate>Tue, 17 Mar 2026 02:45:27 +0000</pubDate>
      <link>https://dev.to/khushboo_parmar/accessibility-debt-the-hidden-technical-debt-in-modern-web-applications-hco</link>
      <guid>https://dev.to/khushboo_parmar/accessibility-debt-the-hidden-technical-debt-in-modern-web-applications-hco</guid>
      <description>&lt;p&gt;Accessibility debt accumulates silently in most web applications. Teams focus on shipping features, but minor accessibility issues—missing labels, poor contrast, bad keyboard navigation—compound over time.&lt;/p&gt;

&lt;p&gt;When left unchecked:&lt;br&gt;
    • Applications fail WCAG compliance&lt;br&gt;
    • Users with disabilities are excluded&lt;br&gt;
    • The cost to fix issues later skyrockets&lt;/p&gt;

&lt;p&gt;Best Practices:&lt;br&gt;
    1.  Include accessibility in code reviews&lt;br&gt;
    2.  Build accessible components from the start&lt;br&gt;
    3.  Automate testing using CI/CD tools&lt;br&gt;
    4.  Educate teams about accessibility best practices&lt;/p&gt;

&lt;p&gt;Key takeaway: Accessibility is not a one-time fix—it’s a continuous responsibility. Tackling it early reduces technical debt and builds inclusive applications at scale.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>a11y</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Automating ADA Compliance in Modern Web Apps 🚀</title>
      <dc:creator>Khushboo Parmar</dc:creator>
      <pubDate>Sat, 07 Mar 2026 03:12:21 +0000</pubDate>
      <link>https://dev.to/khushboo_parmar/automating-ada-compliance-in-modern-web-apps-1c48</link>
      <guid>https://dev.to/khushboo_parmar/automating-ada-compliance-in-modern-web-apps-1c48</guid>
      <description>&lt;p&gt;Accessibility isn’t optional anymore. Automating ADA compliance in modern web apps saves time and keeps your app inclusive. Here’s how to do it smartly.&lt;/p&gt;

&lt;p&gt;1️⃣ Automated Testing&lt;/p&gt;

&lt;p&gt;Use tools like axe-core, Lighthouse, Pa11y to catch issues like missing labels, poor contrast, and ARIA misuse. Integrate them into CI/CD pipelines or unit tests.&lt;/p&gt;

&lt;p&gt;Example with jest-axe in React:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { render } from '@testing-library/react';
import { axe } from 'jest-axe';
import MyComponent from './MyComponent';

test('no accessibility violations', async () =&amp;gt; {
  const { container } = render(&amp;lt;MyComponent /&amp;gt;);
  expect(await axe(container)).toHaveNoViolations();
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ Semantic HTML &amp;amp; ARIA&lt;/p&gt;

&lt;p&gt;Automation helps, but proper markup matters:&lt;br&gt;
    •  over  for actions&lt;br&gt;
    •  or aria-label for inputs&lt;br&gt;
    • aria-live for dynamic updates

&lt;/p&gt;
&lt;p&gt;3️⃣ Continuous Monitoring&lt;/p&gt;

&lt;p&gt;Web apps change fast. Run Lighthouse CI, add regression tests, and alert teams when issues appear.&lt;/p&gt;

&lt;p&gt;4️⃣ Accessible Components&lt;/p&gt;

&lt;p&gt;Reusable components must be accessible by default:&lt;br&gt;
    • Keyboard-friendly navigation&lt;br&gt;
    • Focus management for modals&lt;br&gt;
    • Support for high contrast themes&lt;/p&gt;

&lt;p&gt;5️⃣ Manual Testing Matters&lt;/p&gt;

&lt;p&gt;Automation catches most issues, but humans are irreplaceable:&lt;br&gt;
    • Test with screen readers&lt;br&gt;
    • Navigate keyboard-only&lt;br&gt;
    • Include real users with disabilities&lt;/p&gt;

&lt;p&gt;Bottom line: Automation + best practices + continuous monitoring = a web everyone can use. Start small, iterate, and make accessibility part of your dev DNA. 💻✨&lt;/p&gt;
&lt;h1&gt;
  
  
  webdev #accessibility #reactjs #frontend
&lt;/h1&gt;


</description>
      <category>a11y</category>
      <category>automation</category>
      <category>react</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
