Skip to content

Accessibility

Last reviewed: 2026-09-03

We build InternshipCRM so that a mentee, a mentor or a company contact can use it with a keyboard, a screen reader, a magnifier, or a phone held at arm’s length. This statement says which standard we measure ourselves against, how we check, what does not work yet, and who to write to when you hit a barrier.

Conformance status

Partially conformant — WCAG 2.2 level AA

“Partially conformant” means most of the product meets the standard but some parts do not yet. The exceptions are listed below by name, each with the issue that tracks it.

The standard we measure against

We target the Web Content Accessibility Guidelines (WCAG) 2.2 at level AA. Those are the success criteria everything else on this page refers to.

For buyers in the EU: WCAG 2.2 AA covers the web requirements of EN 301 549 (clause 9), the harmonised standard behind the European Accessibility Act (Directive (EU) 2019/882) and the Web Accessibility Directive (Directive (EU) 2016/2102). In the US, the Revised Section 508 standard references WCAG 2.0 AA, which WCAG 2.2 AA contains. We have not commissioned a third-party audit against any of those documents, so read this as a self-assessment — see “Known limitations”.

What this statement covers

The InternshipCRM web application served from this deployment: the public pages, the sign-in flow, and the mentee, mentor, admin and company areas behind it. It does not cover files that users upload, e-mail as rendered by someone else’s mail client, or the third-party services named further down.

Sixteen URLs are checked automatically on every change, each in light and dark mode, across five role contexts:

  • /
  • /auth/signin
  • /accessibility
  • /apply/:mentorId
  • /portal
  • /portal/profile
  • /messages
  • /notifications
  • /mentor
  • /mentor/mentees
  • /mentor/board
  • /admin
  • /admin/candidates
  • /admin/board
  • /admin/settings
  • /company

The rest of the product follows the same conventions but is not yet under the automated gate. That gap is a limitation, not a claim — it is named below.

How we check

Every line below is something in the repository, not an intention. The link goes to the file or the workflow that makes it true.

  • An axe-core scan runs the WCAG 2.0, 2.1 and 2.2 A and AA rule sets over sixteen pages in five signed-in role contexts. e2e/a11y-scan.spec.ts
  • That scan runs on every pull request as its own required step, so a new critical or serious violation blocks the change instead of surfacing months later. .github/workflows/e2e.yml
  • The result is written back into the repository as a severity-classified report. At the last review it read: zero critical, zero serious, zero moderate and zero minor violations on the pages in scope. docs/a11y-audit.md
  • Dark mode is scanned as a page of its own rather than assumed to behave like the light one, because this codebase re-tints utility classes instead of styling every element twice. e2e/a11y-scan.spec.ts
  • Every page — public or signed-in — begins with a “skip to content” link that targets the main landmark. src/app/layout.tsx
  • Keyboard focus is always visible: a ring on links, buttons, inputs and selects, thickened when the operating system asks for more contrast. src/app/globals.css
  • Dialogs take focus when they open, keep Tab inside while they are open, close on Escape, and hand focus back to the control that opened them. src/components/ui/useModalFocus.ts
  • Interactive controls are at least 44×44 CSS pixels on touch viewports (WCAG 2.2 Target Size), while pointer-driven desktop layouts keep their density. src/components/ui/Button.tsx
  • The pipeline board can be operated without drag-and-drop: every card carries a stage select that moves the mentorship with the keyboard alone. src/components/board/CardStageSelect.tsx
  • Text size is a setting inside the app, on top of whatever browser zoom already does. src/components/FontSizeControl.tsx
  • The app honours what the operating system says about the person using it — reduced motion, increased contrast and forced-colours (high-contrast) modes each have their own rules, asserted by an end-to-end test. e2e/a11y-media-preferences.spec.ts
  • The interface exists in English, Turkish and German with key parity enforced in CI, and each page declares its language so a screen reader picks the right voice. scripts/check-i18n.ts

Known limitations

These are the parts we know do not meet the standard yet. Each one links the issue that tracks it, so you can check whether it has moved since this page was last reviewed.

  • The language and theme pickers in account settings have no programmatic name, so a screen reader announces them as an unlabelled combo box. This is the most serious defect currently shipping. Tracked as #2041
  • The mentee portal is scanned with an account that has no mentorship, so everything that only appears once someone has a mentor — the stage tracker, the mentor card, goals, the calendar — is missing from the measured result. Tracked as #1412
  • This is a self-assessment. Automated rules catch only part of what the standard requires; we have not commissioned an external audit, run a structured screen-reader testing programme, or published a VPAT. Tracked as #2033
  • Right-to-left writing systems are not supported: the document declares its language but never its direction, so Arabic, Hebrew or Persian would be laid out left to right. Not yet scheduled
  • Two embedded third parties are outside our control — the live chat on the home page (loaded only if you accept marketing cookies) and the video-call room used for meetings. We can remove or replace them; we cannot fix their accessibility. Not yet scheduled

Report a barrier

If something here stops you getting your work done, tell us. Naming the page and what happened is enough — you do not need to know why it is broken, or which guideline it breaks. Write to kontakt@ersah.in; we aim to answer within 5 working days.

You can also report it in the public repository, which is where the fix gets tracked either way. Open an issue on GitHub

If our answer is not enough

If you are not satisfied with how we handled your report, you can escalate it. Under the European Accessibility Act every EU member state designates national authorities that receive accessibility complaints and supervise the market; contact the one responsible in the country you are in. The operator of this deployment — the party those procedures apply to — is named, with a postal address, in the imprint.

How this statement is kept honest

It was prepared by self-assessment against the evidence linked above, and it is re-read whenever that evidence changes: when a violation is frozen into the automated baseline instead of being fixed, when a page joins or leaves the scan, or when one of the limitations above is closed. The date at the top is the last time a person did that.

ImprintPrivacy

Back to home

Internship CRM - Mentor-Mentee Management