Chaos informacyjny
Menu w pięciu miejscach, treść pomiędzy reklamami, brak logicznej hierarchii nagłówków. To, co dla jednych jest tłem, dla innych jest murem.
Dostępność cyfrowa · WCAG 2.2 AA
NaviAble pobiera chaotyczny HTML publicznej strony, rozpoznaje jej kluczowe sekcje za pomocą AI i renderuje je w izolowanym, w pełni dostępnym widoku. Bez frameworków, bez wykluczania — nawigacja klawiaturą i czytnikiem ekranu działa od pierwszego uruchomienia.
Dlaczego to ma znaczenie
Publiczne serwisy często publikują treści w rozbudowanych, niespójnych szablonach. Seniorzy, osoby słabowidzące i użytkownicy czytników ekranu płacą za to czasem i frustracją.
Menu w pięciu miejscach, treść pomiędzy reklamami, brak logicznej hierarchii nagłówków. To, co dla jednych jest tłem, dla innych jest murem.
Ukryty fokus, pułapki klawiaturowe, przyciski bez nazw dostępnych. Naprawianie tego w każdej gminie z osobna jest nieefektywne.
Każdy remont strony to kolejny audyt i kolejne poprawki. NaviAble oddziela treść od niedostępnej prezentacji raz na zawsze.
Architektura
Serwer pobiera HTML z zabezpieczeniem przed SSRF i liczy jego odcisk SHA-256.
OpenRouter rozpoznaje header, nav, main i footer oraz stabilne selektory CSS.
Reguły są walidowane schematem i zapisywane w PostgreSQL (JSONB) z wersjonowaniem.
Wtyczka pobiera JSON i buduje semantyczny szablon, odizolowany od stylów strony.
Dostępność
Szablon NaviAble powstaje z myślą o osobach, które korzystają z klawiatury, powiększenia i czytników ekranu. Nie „dorabiamy” dostępności po fakcie — ona wynika z konstrukcji.
Serwer dostarcza wyłącznie dane. Żadna treść ze strony źródłowej nie trafia do wykonania jako kod.
Kontrakt
Wtyczka otrzymuje wyłącznie selektory CSS i nazwy pól. Ten sam format obsługuje każdą stronę, a serwer nigdy nie przesyła wykonywalnego JavaScriptu.
{
"header": {
"selector": "header.site-header",
"confidence": 0.95,
"fields": {
"title": { "selector": "h1", "attribute": "textContent" }
}
},
"nav": {
"selector": "nav[aria-label]",
"confidence": 0.9,
"fields": {
"links": { "selector": "a", "attribute": "href", "multiple": true }
}
},
"main": {
"selector": "main",
"confidence": 0.8,
"fields": {
"content": { "selector": "article", "multiple": true }
}
},
"footer": null
}
# 1. Zlecenie wygenerowania mapowania
curl -s -X POST https://naviable.example/api/v1/mappings/ \
-H "Content-Type: application/json" \
-d '{"domain": "gov.pl"}'
# 2. Odpytanie o gotowe mapowanie
curl -s https://naviable.example/api/v1/mappings/gov.pl/ \
-H "Accept: application/json"
# 3. Odpowiedź: 200 + reguły JSON
# 404 - domena nieznana (wyślij POST)
# 409 - mapowanie w toku lub błąd
Wtyczka jest w przygotowaniu. Backend, API i panel administracyjny są już gotowe — możesz dodać pierwszą domenę i wygenerować mapowanie.