How imnoammm/kav works
Kav is a privacy-focused Android transit app with an optional self-hosted backend. The main rider flow runs from trip or place search through planning, route selection, and an actively guided ride; separate branches cover live transit, maps, fares, and user settings. The server provides live vehicle data, trip planning, and optional arrival predictions. The graph follows documented capabilities and sampled references; unsampled implementation details are represented only where the README supports them.
Main entry points: MainActivity.kt App shell · live.py Server services · eta.py Arrival predictor · Settings.kt Settings
Components 23
Rider app
- App shell
android/app/src/main/java/uk/noammm/kav/MainActivity.kt
Transit data
- Place search
android/app/src/main/java/uk/noammm/kav/data/Search.kt - Transit model
android/app/src/main/java/uk/noammm/kav/data/Transit.kt - Trip planner
android/app/src/main/java/uk/noammm/kav/data/TripPlanner.kt - Kav planning API
android/app/src/main/java/uk/noammm/kav/data/KavPlan.kt - Offline timetable
android/app/src/main/java/uk/noammm/kav/data/Timetable.kt - Kav live API
android/app/src/main/java/uk/noammm/kav/data/KavLive.kt - Journey state
android/app/src/main/java/uk/noammm/kav/data/JourneyFile.kt - Network proxy
android/app/src/main/java/uk/noammm/kav/data/RiderProxy.kt
Rider features
- Lines and boards
android/app/src/main/java/uk/noammm/kav/ui/Lines.kt - Live transit screen
android/app/src/main/java/uk/noammm/kav/ui/LiveScreen.kt - Ride guidance
android/app/src/main/java/uk/noammm/kav/TripService.kt - Maps and tiles
android/app/src/main/java/uk/noammm/kav/ui/TileMap.kt - Rav-Pass payment
android/app/src/main/java/uk/noammm/kav/data/RavPass.kt - Settings
android/app/src/main/java/uk/noammm/kav/ui/Settings.kt
Kav server
- Server services
server/live.py - Arrival predictor
server/eta/eta.py - Prediction inputs
server/eta/inputs.py - Motion model
server/eta/motion.py - Rail predictions
server/eta/rail_inputs.py - OTP planner
server/otp/prepare.py
Other components
- Rider
- Transit services
Connections 25
- Rider → App shell: uses
README.md - App shell → Place search: searches places
android/app/src/main/java/uk/noammm/kav/MainActivity.kt - App shell → Trip planner: plans trips
README.md - App shell → Kav planning API: requests routes
android/app/src/main/java/uk/noammm/kav/MainActivity.kt - App shell → Transit model: uses transit data
android/app/src/main/java/uk/noammm/kav/MainActivity.kt - Trip planner → Offline timetable: uses offline data
- App shell → Lines and boards: opens lines
android/app/src/main/java/uk/noammm/kav/MainActivity.kt - App shell → Live transit screen: opens live view
README.md - App shell → Ride guidance: starts ride guidance
README.md - Ride guidance → Journey state: reads and clears
android/app/src/main/java/uk/noammm/kav/TripService.kt - App shell → Journey state: saves selected trip
android/app/src/main/java/uk/noammm/kav/data/JourneyFile.kt - App shell → Maps and tiles: displays transit maps
README.md - App shell → Rav-Pass payment: offers fare payment
README.md - Settings → Network proxy: configures proxy
android/app/src/main/java/uk/noammm/kav/ui/Settings.kt - Settings → App shell: sets providers
README.md - Kav live API → Server services: requests live data
README.md - Kav planning API → Server services: requests trip plans
README.md - Server services → OTP planner: plans journeys
README.md - Server services → Arrival predictor: serves predicted arrivals
server/eta/eta.py - Arrival predictor → Prediction inputs: builds model inputs
server/eta/eta.py - Arrival predictor → Motion model: uses motion model
server/eta/eta.py - Arrival predictor → Rail predictions: uses rail inputs
server/eta/eta.py - Server services → Transit services: fetches transport feeds
README.md - Place search → Transit services: queries chosen provider
README.md - Maps and tiles → Transit services: loads online tiles
README.md