We are students from the Politecnico di Milano, studying Computer Science and Datascience in the MSc Computer Science and Engineering. This project has been done during the Digital Innovation Lab course.
The main goal of our applications is to let public transportation users know about possible disruptions of the network, as soon as they happen, and give them the ability to plan their route accordingly. For this, they can participate in and benefit from an active community that can report disruptions (i.e. delays, accidents, blocked tram tracks, broken elevators) in real time during their trip and thus, let the others see where and what kind of problem they encountered. In a collaborative way, this would allow people to better choose the route they take to be on time and to improve their overall travel experience.
To run it, clone this repository git clone https://github.com/franckdeturchedura/DIL-Project.git
. Install docker
and docker-compose
if it's not already the case and, in the repository folder, execute docker-compose up -d --build
.
To access all features, you will need a Google API key, which one you'll have to put in instance/config.py
, in the variable API_SECRET_KEY
.
Once done, make sure that you have activated the following APIs from your Google Cloud Console (where you have created the key).
- Get your key
Geocoding API
Places API
Directions API
Maps Embed API
Maps Javascript API
Geolocation API
Once the containers (one for mongodb
and one the the flaskapp
) are running and you have finished the Gmaps APIs step, you can access the web application in your browser at localhost:5000
.
- Only the reports dated from less than 1 hour will be showed on the map.
- Make sure the 2 containers are running.
- If after signing in there is no map, please reload the page.
- In the
/rating
page, we assumed rating a fake line M2. Its average grade is updated each time you submit a rate (the result is showed directly within this page). - The
/route
page only show all metro stations of Milan on the map. The feature is still under construction. - Do not use routes without loging in.
- IMPORTANT : do not try to connect multiple users at the same time. We managed the connection with a unique boolean as a prototype.
- Do not forget to logout at the end of your session (help button top right).
- You can access the MongoDB database in its container from the terminal :
docker exec -it mongodb bash
;mongo
;use mongodb
- The 3 main collections in the DB are
User
,Report
andLine
. - Concerning the
Find my route
feature, please be enough precise in your requests. You should use either both autcompleted places for the creation of the report and to find your route or the two exactly same strings. If no route appears after submiting the form, it means it did not find/understand where you want to go/come from. - We only considered metro station for the
Find my route
feature. - Remark : when mixing addresses from the autocompletion and addresses fully written by hand, the exact location can vary a little and so the reports counter in the
Find a route
feature can be different from what you expect. Please do not mix autocompleted and 'hand written' strings for creating the report and then to find your route. In any case, the markers are on the map so you can easily see where are the reports. - As a future evolution of the
Find a route
feature, we would like to count the number of reports in an area around the given location, for each station on the route. - Remark : the GMAPS APIs do not provide any solution to easily get the names/locations of the stations given a certain route.
This project is licensed under the Apache 2.0 License.
Copyright 2023 Franck Dura
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.