Skip to main content
WCAG AAA
2026

Sluip — Privacy-First Cycling PWA

Joe Gullo Digital

Outcome v1.0 shipped
Year 2026

About

Sluip is a privacy-first cycling tracker delivered as a single HTML file. No servers, no accounts, no telemetry — €14.99, once.

It's built to WCAG AAA in both light and dark themes, a stricter bar than the EAA requires. That wasn't a marketing decision. The usual argument against accessibility-first design is budget, and Sluip is the smallest scale that argument can run on: one developer, one file, one price point. If AAA is achievable here, the budget objection doesn't hold for a funded team.

The constraint was the point

Sluip has no build pipeline, no server, and no dependency tree. That started as a cost decision and became an accessibility one: regressions can't arrive through a vendor update when there are no vendor updates. Every accessibility decision was a design decision before it was an engineering decision.

What AAA actually required

  • Both themes designed against AAA contrast thresholds — the dark theme took two passes, because most "dark mode" palettes clear AA on body text and quietly fail on form controls

  • All interactive controls at 44×44 CSS pixels minimum; the ride-pause control is 56×56, because cyclists' hands are often gloved

  • Ride state — active, paused, ended — signaled by icon and text label, never color alone

  • Full keyboard operation, so a route can be previewed with a screen reader before going outside

The honest limits

 There's no cloud sync. Lose the phone, lose the ride history. That's a deliberate trade: the simpler the system, the fewer the failure modes for the person using it — and privacy and accessibility share that constraint. The hardest AAA problem wasn't visual at all; it was making haptic feedback meaningful to users with motor differences, since haptics aren't standardized across devices. Every haptic cue is paired with a visible animation.

Highlights

WCAG AAA in both light and dark themes
Touch targets 44×44 minimum — 56×56 for the ride-pause control
Ride state never signaled by color alone
Fully keyboard operable, screen-reader tested
Zero accounts, cookies, or tracking
One HTML file — no server, no dependency tree

Built with

PWA Leaflet IndexedDB WCAG AAA Vanilla JS