LoveBridge
Abstract
Ever been in a long distance relationship, or know someone who have? If your answer is yes, then you should know how difficult it is for partners to pull through it unscathed, as the inability of being in each other’s physical presence makes it a lot harder to navigate through the complexities of intimacy, communication and emotional support.
LoveBridge is a mobile application that will allow your partner and you to share information about each other so one half can be informed about the other half’s current activities, scheduled activities, current emotional state and more. The ability to know more about a (or multiple) partner’s life in greater detail, without having to go through the awkward process of asking about things as trivial such as their next alarm (which gives off the impression of being possessive or clingy), fosters the sense of closeness between the lovers, and shows a level of trust and transparency that can deepen the bond between partners.
Author
Name: Eugene Chong
Student number: 46993436
Functionality
This application provides partners to have the ability to share either static and dynamic information to each other.
Features
Not limited to:
- Account:
- Users should be able to create an account and link that account to their partner’s.
- An account should also have the ability to be linked to other account’s such as Spotify or Google Calendar.
- Celebratory Dates Record:
- Partners can upload their birthdays, anniversaries, or other special dates.
- Calendar Sharing:
- A user should be able to input their own and their partner’s calendar.ics file locally.
- A user could also access their partner’s calendar schedule by linking to their partner’s account.
- Location Sharing:
- A user can upload their current location, see their partner’s current location, and interact with it in a map-based interface with Google Map’s API.
- Period Tracking:
- A partner can share data about their menstrual cycle with another partner.
- Spotify’s current listening:
- Partners can see what the other person is listening to currently on Spotify with Spotify’s API.
- Widget
- The application should provide the ability to add a widget on the home/lock screen to show a summarised view of the information.
Scope
The scope for the MVP of this application:
- Account
- Create an account and connect with their partner’s. (No need for external account linking)
- Calendar
- Upload users’ and their partner’s calendar.ics file locally.
- Interactive to add or delete events which will also be reflected on the partner’s device.
- Period tracking functionality
- Location Sharing
- Share current location, and see where their partner is on an interactive map view.
- Widget
- Able to place a widget on the home/lock screen with a summary of important information.
Quality Attributes
In sequence of priority:
Extensibility
- Aiming to bridge the physical distance between partners, virtually almost anything that lovers can do in real life, LoveBridge should dare to dream to implement sometime in the future. From photo album sharing, to movie livestream dates, LoveBridge should provide an interface that facilitates easy implementation of new features, as there are so infinitely many possibilities.
Modularity
- As most features of the app are not associated at all to other features (e.g. location sharing has no association to calendar, nor does Spotify’s current listening has any association with them both, with the current exception being period tracking and calendar), the app can and should be developed with modularity in mind. By developing each of the features as their own separate components, it will be a lot easier to debug or improve on a single feature as the developer do not have to worry about it being coupled or dependent on another feature. This goes hand in hand with the extensibility attribute, as it allows for easier integration of new features.
Security
- Some information to be shared between partners will be extremely sensitive, such as location, calendar information, and most importantly menstrual cycle information (medically related). This will greatly compromise the privacy of the users if unauthorised external parties get their hands on these information. Using externally integrated modules for features, like external APIs, we do not have complete control over the behaviour of the application, and hence a rogue external module can cause problems. Due to the online nature for some of the features, during the upload/download process, a MITM attack is prone to occur.
Evaluation
Extensibility
- To evaluate extensibility, we have to approach it in a qualitative manner. Whether the application is extensible or not can be determined on how welcoming the application’s core is to integrate new features. Dependency injection and/or a plugin architecture can be adapted, and the effectiveness can be evaluated by the allowance of features to be added or removed from the application needing little to no modification any at all to the core.
Modularity
- Modularity goes hand in hand with extensibility, as an extensible application usually implies a modular application. With that said, to evaluate modularity, the code can be analysed to ensure that there is as little coupling as possible, and tests can be ran on each of the modules (features), with tests that will deliberately break the module and check if that error will propagate up to the core and cause the core or other modules to fail.
Security
- With sensitive data such as location and schedules being passed around, it is vital that these data do not get compromised. A good way to evaluate security of the application is to see if there are as minimal attack surfaces as possible. As an example, the application can choose not to host any user sensitive data at all and let sensitive data be stored locally on the device, which eliminates an area of vulnerability, which in this case is the hosted database. To evaluate safety during the transmission process, the network traffic can be monitored to check for anomalies or possible modifications. As per above, with the ability to integrate new features, the application will also most likely utilise external resources such as Spotify’s API. These external resources have a risk of having malicious intent, and hence try to compromise the application’s core. A good way to evaluate security in this regard is by making sure that the as much of the application’s control flow is from the core to the modules, with the application sending and polling data from the application core, giving the modules as little power as possible. Hence, the modules have little or no chance to modify anything in the core, which reduces the chance of rogue modules compromising the core, like with DoS attacks.