The platform is microservice based. The communication between services is message-oriented. All the services are implemented in Java, using the framework Quarkus.
With the following sections, the architecture is introduced.
The architecture diagram is the following:
The API gateway takes all API calls from clients, then routes them to the appropriate microservice with the request. The 4 main services of the platform are the following:
- The so called Live-trip service, that provides all the capabilities to upload a new trip (or a trip of a registered route) and the management of a live trip. The API exposed are the following:
This service at
/index.html?userId={userId}&sessionId={sessionId}
expose also a web application to monitor a live trip of a user. Once a passenger gets the notification that the trip of the driver has started, he can have a look at the current position of the driver (the android application might use aWebView
or use the api to do the same job.). - The Enrichment-Scoring service that calculate the route matching using HERE services and calculates the driving score. The API exposed are the following:
- The route-analytics service that interacts with IBM watson to calculate and retrieve the matchings between users/routes. This service does not expose any API to the API gateway.
- The User service that manages routes, users and notifications. The API:
All the services expose the swagger specs at the endpoint /swagger-ui
, please have a look at them for a detailed overview of the capabilities of each service.
For the security documentation, please have a look at this.