♿ INOVA 2026 · Samsung Challenge

Zagreb, bez zaobilaznih ruta.

Google Maps ne zna da stepenice postoje. Putem po Zagrebu zna. Aplikacija računa rute oko prijavljenih prepreka i daje glasovne upute za slijepe osobe koji mogu koristiti samo mikrofon.

Putem po Zagrebu aplikacija
📍 Glavni prikaz — 110+ verificiranih prepreka vidljivo na karti Zagreba
110+
Verificiranih prepreka
4
Profila pristupačnosti
5
Tipova prepreka

Problem

Standardna navigacija ne razlikuje pješake. Za osobu u kolicima, jedna stepenica na ruti znači povratak na početak. Ovaj projekt skuplja prijave prepreka od stvarnih korisnika i koristi ih pri izračunu svake rute.

Osobe u kolicima

Rute zaobilaze stepenice i visoke rubnjake koje su prijavljene u bazi.

👁

Slijepe osobe

Samo mikrofon, bez dodirivanja ekrana. Aplikacija razumije normalnu rečenicu na hrvatskom.

🤝

Crowdsourcing

Korisnici prijavljuju prepreke direktno na karti. Odmah postaju dio baze za sve.

🏙

Grad Zagreb

Baza prepreka je otvorena. Može je koristiti i gradski ured za planiranje.

Što pokreće aplikaciju

🧠

Claude Haiku

Parsira što korisnik kaže i odlučuje što aplikacija treba napraviti.

🎤

Groq Whisper

Pretvara govor u tekst. Posebno podešen za hrvatska mjesta i ulice.

🗺

ORS Wheelchair

Routing engine koji računa rute bez stepenica i visokih rubnjaka.

🚌

ZET Real-time

Žive pozicije tramvaja i autobusa na karti, bez osvježavanja stranice.

⚡ BRZI START

Kako početi

Nema instalacije. Otvorite putempozgu.andric.studio u pregledniku i krenite.

Onboarding
👋 Pri prvom posjetu prikazuje se 6-koračni onboarding koji objašnjava sve funkcije

Koraci

Odaberite profil

Gore u izborniku odaberite Kolica, Slijepi, Opće ili Bicikl. Od toga ovisi koji se algoritam koristi i koje prepreke vidite.

Unesite polazište i odredište

Upišite ulicu ili kliknite 📍 da aplikacija uzme vašu lokaciju. Zadnjih 5 adresa pamti se automatski.

Kliknite "Traži pristupačnu rutu"

Ruta se crta na karti plavom linijom, zaobilazi sve prijavljene prepreke za vaš profil.

Pratite upute

Skretnice su vidljive na karti. Kod slijepog profila aplikacija govori udaljenost u koracima, bez da trebate gledati ekran.

Prijavite prepreke

Tipka + dolje desno. Tapnite mjesto na karti, odaberite tip, gotovo.

Android instalacija: Aplikacija se može instalirati i kao nativna APK. Preuzmite na /download.
👤 PROFILI PRISTUPAČNOSTI

Profili

Ovisno o profilu mijenja se i što vidite na karti i kako se računa ruta.

Kolica profil
♿ Kolica — 149 prepreka, ORS wheelchair routing
Slijepi profil
👁 Slijepi — glasovna traka aktivna pri dnu

Kolica

Wheelchair routing
  • OpenRouteService wheelchair profil
  • Zaobilazi stepenice, visoke rubnjake i oštećene rampe
  • 149 prijavljenih prepreka u bazi
  • Skretnice s procjenom trajanja puta
👁

Slijepi

AI Voice mode
  • Automatska aktivacija mikrofona
  • Udaljenost izražena u koracima
  • Groq Whisper + Claude Haiku pipeline
  • 22 snimljene fraze na hrvatskom za brže odgovore
  • Wake word detekcija
🚶

Opće pješačenje

OSRM foot
  • OSRM foot profil — brze rute
  • Prikazuje rubnjake i ostale prepreke
  • Manji broj prepreka relevantnih za pješake
🚲

Bicikl

OSRM cycling
  • OSRM cycling profil
  • Može se kombinirati s prikazom Bajs stanica
  • Stanice javnih bicikala
🎤 GLASOVNE NAREDBE

Glasovne naredbe

U slijepom profilu mikrofon se uključuje sam. Govorite normalnom rečenicom na hrvatskom, aplikacija shvati što trebate.

Voice interface
🎤 Glasovna traka aktivna — tipke za stop, ponovi i mute pri dnu ekrana

Primjeri

🎤 Sve ovo aplikacija razumije
🎤
"Idem od Jaruna do Glavnog kolodvora"
→ Postavlja polazište i odredište, traži rutu automatski
🎤
"Odvedi me na Jelačić"
→ Geocodira Jelačić plac, postavlja odredište
🎤
"Pronađi put do Zrinjevca"
→ Traži rutu do Trga Nikole Šubića Zrinskog
🎤
"Slijep sam" / "Gledam lošije"
→ Prebacuje na Slijepi profil
🎤
"Stani" / "Zaustavi navigaciju"
→ Prekida aktivnu navigacijsku sesiju
🎤
"Gdje sam?" / "Koja je to ulica?"
→ Reverse geocoding, izgovara adresu
🎤
"Ponovi"
→ Ponavlja zadnju glasovnu poruku

Kako to radi ispod haube

Detekcija govora

Browser sam detektira kad govorite, bez posebnih biblioteka. Šalje isječke od 3 sekunde na server.

Prepoznavanje govora

Groq Whisper pretvara audio u tekst. Ima poseban popis 80+ zagrebačkih ulica i okretišta da bolje razumije HR izgovor.

Razumijevanje namjere

Claude Haiku čita transkript i odlučuje što treba napraviti: postaviti odredište, pokrenuti navigaciju, zaustaviti je itd.

Glasovni odgovor

22 unaprijed snimljene fraze na hrvatskom za česte odgovore. Za sve ostalo koristi se Web Speech API.

Ograničenje: Glasovni i AI endpointi primaju max 10 zahtjeva po minuti po korisniku.
⚠ CROWDSOURCING PREPREKA

Prijave prepreka

Prepreke prijavljuju korisnici, a odmah se koriste pri izračunu ruta za sve ostale.

Karta prepreka
⚠ 149 prepreka na karti Zagreba
Lista prepreka
📋 Lista verificiranih prepreka s opisima

Što se može prijaviti

🤴

Stepenice

Ulazi u zgrade, pothodnici, prijelazi bez rampe.

🔴

Visoki rubnjak

Rubnjaci koje kolica ne mogu prijeći.

Kamene kocke

Neujednačene površine otežane za kolica i štap.

Oštećena rampa

Rampa koja postoji ali ne funkcionira.

🚧

Ostalo

Gradilišta, zatvoren prolaz, privremene prepreke.

Kako prijaviti

Kliknite "+"

Zeleni + dolje desno. Karta prelazi u mod prijave.

Tapnite lokaciju

Kliknite točno mjesto na karti. Otvara se forma za unos.

Odaberite tip

Stepenice, rubnjak, oštećena rampa ili ostalo. Opis je opcionalan.

Odmah aktivno

Prepreka se odmah vidi na karti i ulazi u izračun ruta za sve.

Admin panel na /admin: tablica svih prepreka, verifikacija i brisanje. Svi korisnički inputi su zaštićeni od XSS napada.
📁 SLOJEVI I KARTE

Slojevi i karte

U panelu postavki (⚙ gore desno) birate stil karte i što se prikazuje na njoj.

Panel postavki
⚙ Panel postavki — vrste karte i slojevi

Vrste karte

🗺
Standardna

OpenStreetMap, zadana. Ulice i nazivi vidljivi.

🛰
Satelit

Snimke iz zraka, visoka rezolucija.

Topografija

Reljef i visinske linije terena.

🌙
Sivkasta

Tamna paleta, prepreke su uočljivije.

Opcijski slojevi

🚗
Gužva u prometu

Boje cesta prema brzini prometa u realnom vremenu (TomTom).

🚌
Javni prijevoz

Gdje su tramvaji i autobusi upravo sada.

🚲
Bajs

Stanice javnih bicikala s brojem slobodnih komada.

🏥
Zdravstvo

Bolnice i ljekarne. Dežurne (0-24h) posebno označene.

📍
Moja lokacija

Prati GPS i drži kartu centriranu na vas.

🎨 PRILAGODBA BOJA

Prilagodba boja

Oko 8% muškaraca ne razlikuje neke boje. Aplikacija ima 4 palete koje mijenjaju boje prepreka na karti.

Prilagodba boja
🎨 Panel za prilagodbu boja — klik na "Boje" tab u izborniku
Standardna

Zadana paleta.

Deuteranopija

Crveno-zeleno sljepilo (~8% muškaraca).

Protanopija

Ne razlikuju crvenu boju (~2% muškaraca).

Tritanopija

Plavo-žuto sljepilo (~0.003%).

Akromatopsija

Potpuno sljepilo boja — visoki kontrast.

Tehnički: Svaka paleta mijenja CSS varijable boja markera. Odabir ostaje zapamćen između posjeta.
🏗 ARHITEKTURA SUSTAVA

Arhitektura

Flask backend, SQLite baza, vanjski routing API-jevi i AI servisi.

┌── Browser (Leaflet.js) ───────────────────────────┐
│  Routing UI | Voice UI (VAD+TTS) | Map + Layers  │
└───────┬─────────┬─────────────────────┘
         |               |
┌─────────┬─────────┬─ Flask (port 5072) ──┐
│  /api/route    /api/voice-stt    /api/obstacles  │
│  /api/geocode  /api/ai-command   /api/zdravstvo  │
└───────┬─────────┬───────────┬────────┘
         |               |               |
    ORS/OSRM      Groq Whisper      SQLite DB
    Nominatim     Claude Haiku      + ZET WebSocket
                                    + TomTom/Bajs
🐍

Python / Flask

Backend i REST API. PM2 drži proces pokrenutim.

📐

SQLite

Baza prepreka. Nema potrebe za PostgreSQLom.

🗺

Leaflet.js

Karta s više stilova i oznakama prepreka.

🧠

Claude Haiku

Razumijevanje glasovnih naredbi na hrvatskom. Vraća samo JSON.

Deployment

# PM2 pokretanje
pm2 start app.py --name inova-wheelchair --interpreter python3

# Nginx reverse proxy
server {
    server_name putempozgu.andric.studio;
    location / { proxy_pass http://localhost:5072; }
}

# SSL
certbot --nginx -d putempozgu.andric.studio
⚙ API REFERENCA

API

Baza pokreće https://putempozgu.andric.studio/api/. Čitanje je otvoreno, bez autentikacije.

Prepreke

MetodaEndpointOpis
GET/api/obstaclesSve prepreke (opcija ?verified=1)
POST/api/obstaclePrijava prepreke. Body: {lat, lon, type, description}
POST/api/obstacle/<id>/verifyVerifikacija (admin)
DELETE/api/obstacle/<id>Brisanje (admin)

Routing i geocoding

MetodaEndpointOpis
POST/api/routeIzračun rute. Body: {start, end, profile}
GET/api/geocode?q=Geocoding (Photon → Nominatim fallback)
GET/api/terminalsZET terminusi za autocomplete

AI i glasovni endpointi

MetodaEndpointOpis
POST/api/voice-sttAudio blob → tekst (Groq Whisper). Limit: 10/min/IP
POST/api/ai-commandTekst → JSON akcija (Claude Haiku). Limit: 10/min/IP
GET/api/tts-manifestLista predsnimljenih HR TTS fraza

Javni slojevi

MetodaEndpointOpis
GET/api/zdravstvoBolnice i ljekarne s koordinatama
GET/api/bajs-stationsBajs stanice s brojem bicikala
GET/api/statsStatistike aplikacije

Primjer — Prijava prepreke

POST /api/obstacle
{ "lat": 45.8134, "lon": 15.9775,
  "type": "stairs", "description": "Nepristupačan ulaz u pothodnik" }

// Odgovor:
{ "id": 247, "status": "created" }

Izvorni kod

Kompletan izvorni kod aplikacije. Ukupno 4 datoteke.

Učitavanje...