Rust-based web app for visually tracking busses of the city of Trento. Interactive map for visual tracking of busses, with their trips, the current location and delay.
The data is provided by Trentino Trasporti (TT) using the bruss_tt crate, fetches data from their APIs. The data is processed through the bruss_grind tool that interpolates bus routes, provide schedules and organizes the map data.
An application is provided for consulting the actual location and delay of each bus, the application components are:
- bruss_api: An API backend written using rocket;
- bruss_app: A frontend written in flutter;
- bruss_db: MongoDB in a docker container;
After some data gathering, an analysis on the will be done, it will involve the average delay for every line of busses, based on their location, on the hour of day and the day of the week. This will maybe help understanding how the delay is generated and how the city traffic affect the public transportation service.
Project by Lorenzo Bodini, for bachelor degree internship.
- Choose a name for the application
- Create repo and project structure
- Define components
- Choose programming components
- TT: bruss_tt (rust) HTTP client tailored to work with TT APIs, including serialization of the incoming data and a better representation of it.
- Router: bruss_router (rust)
Data processor, it uses TT for getting static (like
Area
s andStop
s) and dynamic (likeTrip
s) from the official servers, it then proceeds to process the data, mainly calculating the segments that connect the right stops using a custom instance of OSRM (Open Source Routing Machine). - OSRM: bruss_osrm Docker files and scripts to run a custom instance of OSRM, configured to be able to calculate bus and train paths, that do not necessarily follow standard traffic rules.
- App
- Data Analyzer
- Analyzer: TBD (rust)
- Visualizer: TBD (rust / egui?)
- Write inline documentation for all components