On The Grow, LLC (“we”, “us” or “our”) wants Sprouting Tracker (“the Service”) to be usable by as many people as possible, including people using screen readers, screen magnifiers, keyboard-only navigation, browser zoom or voice control.
1. What we aim for
We aim to meet the Web Content Accessibility Guidelines (WCAG) 2.1, Level AA. Accessibility is ongoing work rather than a box to tick, and we treat a barrier as a bug.
2. Where we are
We design to WCAG 2.1 Level AA. We check text contrast automatically, in light and in dark. We have not had an independent audit, and we do not claim full conformance. Section 4 names the limits we know of.
3. What we do
- It works without JavaScript, almost everywhere. Almost every interaction in the app works with scripting disabled. The exceptions are the notification permission prompt and the install dialog, which the browser will only open from a real tap, and the bot check on sign-in, sign-up, password reset and the contact form, which runs a script from Cloudflare. Where installing offers no dialog, written steps take its place. Otherwise forms post, tabs are ordinary links, panels are native disclosure elements and filters are links. That is a design rule rather than a fallback, and it means the app degrades gracefully on older assistive technology and slow connections.
- Text size is a setting. Small, medium and large in Settings scale the whole interface rather than a few headings, so spacing and tap targets grow with the text instead of squeezing it. Browser zoom works on top of that.
- Contrast is tested, not eyeballed. The colour palette has an automated test that checks text and control colours against their backgrounds in both light and dark themes, and it runs with the rest of the test suite.
- Colour is never the only signal. A jar’s stage is carried by a label, a position and a shape as well as a hue. Where a coloured dot appears, the heading beside it says the same thing in words. The selected item in the bottom bar carries a rule above it as well as deeper ink, and it is marked as the current page for a screen reader. Under a forced high contrast palette that rule is redrawn in a system colour so it survives.
- Buttons and fields are built to a 44 pixel minimum height, and they grow rather than overflow when a label wraps at the large text size.
- Light, dark and system themes are a setting, and both palettes are contrast tested. The app is available in English and Spanish, chosen in Settings. The legal pages, the landing page, the sign-in screens and our staff console are in English only.
- Focus is visible, and never switched off. The shared field style carries its own ring, so every text box, number box and menu shows focus the same way on every screen. Everywhere else the browser’s own focus outline is left where it is.
- Every page with navigation opens with a skip link. The first thing the Tab key reaches is a link straight to the main content, so a keyboard or a screen reader does not walk the navigation to get to the page. The sign-in form, the setup screens and the error pages have no navigation to skip, so they carry no link to skip it with.
- Every screen has a heading and a landmark. Where the navigation already names a page, the heading is visually hidden but still in the document, so a screen reader announces where you have arrived and the page keeps a proper outline.
- Motion respects your system setting. If you have asked your device to reduce motion, the animations are dropped. Where an animation was carrying information, a still equivalent replaces it rather than nothing.
- Hidden things are properly hidden. Panels that are closed are taken out of the tab order and the accessibility tree, so a screen holding nine jars is not nine invisible dialogs a keyboard has to walk through.
- An overlay is announced as the thing it is. The rinse panel is built without JavaScript, so the page behind it stays reachable and a keyboard can leave it the way it came in. It is therefore a dialog, and it says dialog. Marking it as a modal is a promise the Tab key would break on the first press, so we do not make it. With scripting on, Escape closes a panel, opening one moves focus into it, and closing it returns focus to where you were.
- Text alternatives. Buttons, fields, progress bars and icons carry accessible names, and decorative graphics are marked so assistive technology skips them.
4. Known limitations
We would rather name these than let you find them. As of the date at the top of this page:
- Two dialogs are your browser’s, not ours. Turning on reminders and installing the app open a prompt that the browser draws itself, which is why they need scripting (Section 3). We cannot label, reorder or restyle what is inside them, and how they read to a screen reader is your browser’s decision rather than ours.
- The bot check is Cloudflare’s. Sign-in, sign-up, password reset and the contact form load a Cloudflare Turnstile check. We cannot change how it reads to a screen reader, and it needs scripting to complete.
- Our screen reader coverage is not exhaustive. The contrast test runs with the rest of the test suite and the markup is written to the standard, but the data-dense screens, meaning the jar shelf, Stats and the printable grow record, have been driven by hand on a limited set of screen reader and browser pairings rather than on all of them. If yours is one we have not reached, Section 5 is how we find out.
5. Telling us about a barrier
If something blocks you, please tell us. It helps enormously if you can include:
- The page or screen you were on
- What you were trying to do
- The assistive technology, browser, device and operating system you were using
You can use the contact form inside the app, under Help, or email us directly. We treat a barrier as a bug, and a report is how one gets found. We do not run a support desk, so this is a notice rather than a ticket: we do not commit to a reply, to a timescale, or to supplying information from the Service in a different format. Reports are still how the list in Section 4 gets shorter.
6. Changes
We update this statement as the Service improves, including removing items from Section 4 as they are fixed. The “Last updated” date at the top reflects the latest version.