How triple-david-iot/accesiblebus-android works
AccessibleBus combines an Android passenger/driver app with a FastAPI demo backend. The passenger flow selects a stop, submits and tracks assistance requests, and reconciles state through the API and event feed; the app also exposes driver HMI and accessibility preferences. The backend handles commands, demo trips and synchronization, backed by PostgreSQL and background event/receipt services. README documents Node-RED and Mosquitto as integration services. Some app and backend modules were not excerpted, so their connections are included only where the index or README supports them.
Main entry points: main.py API entry · demo.py Demo trip · StopsScreen.kt Passenger UI · db.py Database access
Components 29
Android app
- Passenger UI
app/src/main/java/dte/masteriot/accessiblebus/ui/passenger/StopsScreen.kt - Passenger state
app/src/main/java/dte/masteriot/accessiblebus/ui/passenger/PassengerViewModel.kt - Request confirmation
app/src/main/java/dte/masteriot/accessiblebus/ui/passenger/ConfirmScreen.kt - Request tracking
app/src/main/java/dte/masteriot/accessiblebus/ui/passenger/TrackingScreen.kt - Stops data
app/src/main/java/dte/masteriot/accessiblebus/core/data/StopsRepository.kt - Assistance state
app/src/main/java/dte/masteriot/accessiblebus/core/data/AssistanceRepository.kt - API source
app/src/main/java/dte/masteriot/accessiblebus/core/net/ApiSource.kt - HTTP client
app/src/main/java/dte/masteriot/accessiblebus/core/net/ApiClient.kt - MQTT event feed
app/src/main/java/dte/masteriot/accessiblebus/core/data/EventFeed.kt - MQTT client
app/src/main/java/dte/masteriot/accessiblebus/core/mqtt/BusMqttClient.kt - Preferences UI
app/src/main/java/dte/masteriot/accessiblebus/ui/screens/PreferencesScreen.kt - App configuration
app/src/main/java/dte/masteriot/accessiblebus/data/AppConfigRepository.kt - Driver HMI
app/src/main/java/dte/masteriot/accessiblebus/ui/screens/hmi/HmiScreen.kt - App navigation
app/src/main/java/dte/masteriot/accessiblebus/navigation/AppNav.kt - Dependency wiring
app/src/main/java/dte/masteriot/accessiblebus/AppContainer.kt
API backend
- API entry
api/app/main.py - Request commands
api/app/commands.py - Demo trip
api/app/demo.py - State sync
api/app/sync.py - Demo identity
api/app/auth.py - Database access
api/app/db.py - Event outbox
api/app/outbox.py - Event receipts
api/app/receipts.py
State and messaging
- PostgreSQL
Integration services
- Mosquitto broker
- Node-RED
nodered/package.json
Other components
- Passenger
- Driver
- Operator
Connections 39
- Passenger → Passenger UI: uses
- Passenger UI → Passenger state: uses state
app/src/main/java/dte/masteriot/accessiblebus/ui/passenger/StopsScreen.kt - Passenger state → Assistance state: requests assistance
- Passenger UI → Stops data: loads stops
- Passenger UI → Request confirmation: confirms request
app/src/main/java/dte/masteriot/accessiblebus/navigation/AppNav.kt - Passenger UI → Request tracking: tracks request
app/src/main/java/dte/masteriot/accessiblebus/navigation/AppNav.kt - Request tracking → Passenger state: observes state
app/src/main/java/dte/masteriot/accessiblebus/ui/passenger/TrackingScreen.kt - Assistance state → API source: calls API
app/src/main/java/dte/masteriot/accessiblebus/core/data/AssistanceRepository.kt - HTTP client → API source: implements
app/src/main/java/dte/masteriot/accessiblebus/core/net/ApiClient.kt - Assistance state → MQTT event feed: subscribes events
app/src/main/java/dte/masteriot/accessiblebus/core/data/AssistanceRepository.kt - MQTT event feed → MQTT client: uses client
app/src/main/java/dte/masteriot/accessiblebus/core/data/EventFeed.kt - Preferences UI → App configuration: reads and saves
app/src/main/java/dte/masteriot/accessiblebus/ui/screens/PreferencesScreen.kt - Preferences UI → App navigation: routed by
app/src/main/java/dte/masteriot/accessiblebus/navigation/AppNav.kt - Driver → Driver HMI: uses
- Driver HMI → App navigation: routed by
app/src/main/java/dte/masteriot/accessiblebus/navigation/AppNav.kt - Dependency wiring → Assistance state: constructs
app/src/main/java/dte/masteriot/accessiblebus/AppContainer.kt - Dependency wiring → HTTP client: selects client
app/src/main/java/dte/masteriot/accessiblebus/AppContainer.kt - Dependency wiring → Stops data: constructs
app/src/main/java/dte/masteriot/accessiblebus/AppContainer.kt - Dependency wiring → App configuration: constructs
app/src/main/java/dte/masteriot/accessiblebus/AppContainer.kt - API entry → Request commands: mounts routes
api/app/main.py - API entry → Demo trip: mounts routes
api/app/main.py - API entry → State sync: mounts routes
api/app/main.py - API entry → Database access: opens and closes
api/app/main.py - API entry → Demo trip: initializes scenario
api/app/main.py - API entry → Event outbox: starts worker
api/app/main.py - API entry → Event receipts: starts worker
api/app/main.py - Request commands → Database access: runs transactions
api/app/commands.py - Request commands → Demo identity: checks actor
api/app/commands.py - Demo trip → Database access: reads and writes
api/app/demo.py - Demo trip → Request commands: uses command logic
api/app/demo.py - Demo trip → Demo identity: checks actor
api/app/demo.py - State sync → Database access: reads state
api/app/sync.py - State sync → Demo identity: checks actor
api/app/sync.py - Database access → PostgreSQL: queries
- Event outbox → Mosquitto broker: publishes events
- Event receipts → Mosquitto broker: receives receipts
- MQTT client → Mosquitto broker: connects
README.md - Node-RED → Mosquitto broker: integrates via MQTT
README.md - Operator → Demo trip: resets trip
api/app/demo.py