[KeepUp]
Abstract
Ever wanted to quickly catch up with your friends spread across Brisbane or meet someone halfway for lunch but don’t know where to go that’s convenient for everyone? Have you ever thought that the place you picked wasn’t exactly halfway? Welcome to KeepUp. KeepUp is a website or mobile App that helps you and your friends meet in the middle. KeepUp leverages Google and Apple Maps, search and your favourite location-sharing services to conveniently arrange meetups with your friends across your city, country and even the globe! At its core KeepUp will allow you to select individual or groups of friends and a search term like coffee and find the most convenient and best coffee spot for everyone. So, if you’re that friend who lives out in the sticks or the one in the middle of everyone, your time will be treated with respect equally.
Author
Name: Noah Stevens
Student number: 46982122
Functionality
Core Functionality
Meet in the middle calculation with custom parameters – Users will be able to find a middle point between addresses and this point may be based on time to reach destination, distance to destination, cost to reach destination and transport methods used.
Search and filtering – Users will be able to search around a midpoint between addresses for types of vendors and may filter via rating, cuisine, price etc.
- Accounts - Users will be able to create accounts on the KeepUp platform enabling users to connect to others, as well as keep track of their past trips, settings and other data.
- Friends and friend groups – Users will be able to add or follow other users to plan trips with them. Users will also be able to create and join groups of users to be able to quickly find routes and see locations together.
- Trip preferences – Users will be able to set preferences for trips including whether toles should be considered, If routes are accessible or if the user prefers lower carbon footprint routes.
- Lift assist and credits – KeepUp keeps track of who gives who a lift and how lifts can be the most efficient between friends. This system makes sure that a generous friend who always provides lifts can sit back and relax once in a while.
- Travel together – KeepUp provides an optional setting to prioritise routes which means your friends can hop on the same bus or ride the same route to locations.
- Public Rideshare functionality – KeepUp will suggest drivers on the way to your destination using rideshare services such as Uber Pool.
Location Sharing Functionality
- Location sharing – Users will be able to share their location with selected users similar to Find My Friends or Life360. They will be able to integrate or import their existing contacts in those platforms to KeepUp.
- Safety features – KeepUp will provide Life360-like safety features including driver reports showing speeding, fast acceleration, and phone use as well as SOS and crash alerts.
Event Functionality
- Scheduling and planning events for your friend group – KeepUp will include an inbuilt calendar and schedule, where you can set your own availability and schedule events with your friend groups.
- Drop a flag for events – KeepUp will offer functionality allowing users to drop a flag or pin a location to notify friends an impromptu event (e.g. study session at the library or a house party) is happening, enabling users to see how they can reach that event.
- Public event search - Events may be able to make public posts to invite users to attend, allowing users to see if it’s convenient.
Scope
To provide a minimum viable product (MVP) a system must enable users to:
- Create an account – multiple users on different devices on home or mobile networks must be able to create an account with KeepUp storing authentication information, a static home address and a dynamic current address if opted into. Users must be able to upload a profile image to customise their profile.
- Add friends or followers – Multiple users must be able to “add” each other on KeepUp and be able to see their friend’s name and shared data such as a static home address.
- Creating and managing friend groups - Users must be able to create and manage friend groups including adding or removing friends and updating the group’s name and background image.
- Search – Users must be able to select addresses or multiple friends to find a midpoint between. Users must be able to search for terms including coffee or types of restaurants and must be shown relevant results.
- Filtering – Some basic search filtering such as vendor by star rating or midpoint by time to travel or distance must be usable in the search functionality.
- Maps Display – Users must be able to see the midpoint situated between the origin addresses and must be shown the basic outline of the routes calculated to reach this point.
This system may take the form of a mobile application or web application.
Quality Attributes
Scalability
As an application with social media functionality, KeepUp must be scalable to a wide audience. Practically KeepUp must be able to support a critical mass of users in order to become a successful piece of software. Due to the nature of the application, a large number of users will be joining the application at the same time as groups accumulate on the platform to utilise the search functionality.
Availability
KeepUp needs to be accessible in all countries and at all times. An application designed to schedule meetings doesn’t work when users aren’t able to access the service due to their phone OS or country. Due to the 24 nature of the world friends will need to keep up at all times.
Reliability
KeepUp needs to be accessible to find routes and plan for public, friend or family events. As a social media and a planning tool KeepUp reliability is key to maintaining users and providing value to customers. For example, KeepUp can’t go down while friends are meeting up for the first time in years.
Interoperability
KeepUp with its social media and maps functionality will require a software system to easily update internal components and databases as users’ locations and profile information changes. KeepUp must be able to easily receive and share data with multiple maps applications including global maps data as well as any existing or new location-sharing platforms, public transport companies and rideshare companies in the world. KeepUp must be able to share and receive data from a wide range of devices including IOS and Android mobile devices and potentially any web-enabled devices.
Testability
KeepUp provides a base functionality that as part of reliability cannot serve incorrect midpoints or searches to users. KeepUp provides a service that is trivial and can be done by a user using existing maps platforms repeatedly. Having incorrect midpoints, failed searches or biased searches would result in an immediate collapse of a user base. Other functionality sits on top of this base service and would additionally require testing. Due to the varied nature of global digital maps, categories to be searched and the dynamic nature of location data, KeepUp must be designed so that automated tests can be deployed easily in order to maintain a user base and its desired functionality.
Security
Users are sharing extremely private data on KeepUp including location and travel data, home addresses, friends’ circles, emails and search data. The information security for these information assets is crucial and regulations such as the GDPR mandate its protection.
Evaluation
Scalability
Tests may be performed to identify if the following can occur.
- A large number (1000+) of users can access the platform (e.g. create an account, add a user as a friend) at the same time.
- A large number (20+ ) of addresses may be used in a search without causing significant performance drawbacks or crashing.
- A large number (1000+) of current location data points are able to be effectively managed by the software architecture.
- A large number (500+) of friends can be added or followed without causing significant performance drawbacks or crashing.
- A large number (20+) of users can be added to a friend group without causing significant performance drawbacks or crashing.
Availability
- The system must be able to be used at all times – a testing program testing 24-hour usability should be performed.
- The system must be able to be used in multiple cities or countries – a test showing its usability in multiple cities must be performed. A test using search functionality for multiple cities and countries must be performed.
- Users must be able to use search functionality with filtering.
Reliability
- The system must automatically restart after crashes. A test when the system is manually shutdown, or the server is powered down and restarts must occur.
- The system must handle and log errors appropriately not resulting in crashes. Known bugs may be used to test this functionality and then later be patched.
- The system must be able to provide service despite a server shutdown. Backup instances of the application must be run to take over failed servers.
Interoperability
- The system must use the Google Maps API or similar service. The system must display a maps visual of the addresses used to search, the time/distance it takes to get there and the midpoint.
- User feeds are updated live with location or profile data changes of other users. A testing video may be recorded to show this.
- The system must be able to provide the service to at least Android and IOS devices.
Testability
- Backend Tests may be easily and quickly run in development.
- Tests may be easily added to the test suite and a commit that adds a test must utilise that test in the version control and deployment pipeline.
- Tests are run automatically in the development and deployment pipeline e.g. in version control at test deployment and prod deployment.
- Tests are able to test a large number of use cases of the platform, and all functionality implemented.
Security
- The Trust with Reluctance principal including the principal of least privilege is utilised.
- Users can only see location or personal information from accounts that have added them as friends.
- Input validation is employed
- Passwords are not stored as plain text