The goal of this project is to develop an app for travelers to find compatible fellow-travelers to share a journey with two modes. One mode is a search for travelers to share a daily commute. The second mode is to find compatible travelers in real-time. For example, when leaving a concert stadium, or queueing at a busy taxi-rank, find compatible people who share the same objectives (e.g., traveling roughly in the same direction) and where each traveler will feel safe (e.g., only women). This should include proactively contacting a potential traveler in the environment, who suits the current group. For example, if a group of three women who attended a concert is going in the direction of Place A, then a fourth woman, who lives in Place A, and is nearby, would be sent a text informing her of the trip. Most likely, the group will share a taxi, and the group needs to book a taxi and arrange for payment. The group may also choose to walk together (e.g., a small group of people may feel safer walking a short distance together, than doing so by themselves). Selection of travelers for the group may take reputation into account, and after each trip, each traveler should “rate” fellow travelers. A journey route should be devised taking all final destinations into account.
The application should:
Cater for travelers within a 500m radius, finding a suitable starting point for all agreed travelers. Each traveler should be given directions to the start point;
Cater for travelers with different destinations, grouping within a “reasonable” area, with shortest path routing between the different destinations;
Proactively contact suitable traveling companions of a trip near them.
Where real-time data, or users, are not available, options should be simulated.
The app needs not to take into account, how people are traveling. The main objective is to group people and show the path in the map. The application needs to work in offline mode and communication between the user can be using Bluetooth, wifi direct, google nearby etc.(without internet).
The system must:
Be highly available. The system must be fault tolerant. The system should execute without requiring all travellers to access a single server. Decision-making should be peer-to-peer. The system must react favourably even if data from heterogeneous sources are not available;
Provide low latency for mobile users. This means that a decentralised architecture is likely to be most appropriate;
Be secure. The system should be secure from attack.