top of page

ARCHITECTURE

Client Side

Our client side is an Android app based on the Google Maps API, and developed in Android Studio. It enabled the user to search for routes from starting point to destination, and performs various calculations in order to rank the resulted routes according our algorithm and user preferences. The client side also enables showing different layers on top of the map, which include biking paths and Tel-O-Fun stations. Additionally, the client provides turn-by-turn navigation.

 

In order to do the above the app integrates with several APIs and libraries:

  • Google Places Auto-completion API – for place completion as you type.

  • Google Maps Web Service APIs:

    • Directions API – for retrieving paths from starting point to destination.

    • Elevation API – for getting the elevation data of each route.

    • Geocoding API – for getting the address of points selected from map.

  • Google Play services Location API – for current location updates.

  • GraphView library - used for showing the elevation graph of each route.

  • Skobbler library - for online, turn-by-turn navigation, using text-to-speech instructions.

  • Tel Aviv Municipality API:

  • SlidingUppPanel library â€“ for improved GUI for the routes' elevation graph and information.

 

Server Side

We have implemented a light server side that is intended for retrieving updated data from the Tel-O-Fun website. It introduces two improvements: One is that the data is retrieved quickly into the app, and the other is that each click on a Tel-O-Fun does not issue a GET command to the Tel-O-Fun website, but to our database.

 

The server side is runs a python code, every 5 minutes, using Amazon Web Services (AWS) Lambda service. This code gets the data from the Tel-O-Fun website, parses it , and updates the availability data in AWS DynamoDB (NoSQL Server), including the timestamp (UTC) of the last update for each station.

 

When the user clicks on a Tel-O-Fun station, the app then send a query to the DB for the updated availability. If the timestamp in the DB is not updated, the app will attempt to get the information directly from the database.

 

Additionally, the DynamoDB server also holds a table that contains the URL strings of the different Municipality websites. The app uses these URLs in order to get data from the municipality API. This way, in case only the URL changes (for some reason), the client side will not have to be updated, but only the URLs in that table.

bottom of page