You are on page 1of 9

Technical Feasibility

Introduction

This application has three essential core functions: Screening, Categorisation and Intervention.
Screening allows users to be categorised into different groups from which a user can transition
between the categories. The categories would help separate those who don’t need specialist help to
those who do. Intervention, then allows for users who need specialist help to receive this
immediately and those who don’t, will receive certain interventions through the application itself
and if these users don’t show improved signs, then they are elevated to a category closer to those
needing specialist help. A technical specification for the user is that they need to have either an
Android or iOS device in addition to some form of internet access.

Feature sets

All determinants have features that align with the primary core functions and other features are
built from there.

Exercise

 Offer workouts as one means of an intervention


 Provide education with respect to the benefits exercise and effects of not engaging in it
 Ability for users to obtain achievements and badges upon completing challenges/workouts
 Ability to export data
 Watch device support
 Ability to categorise users by physical activity history in addition to the screening
 Ability to import physical activity data
 Ability to personalise workouts through machine learning
 Ability to produce an exercise workout plan for an individual
Nutrition

- Healthy food recommendations


It may be an automatically generated diet advice built using Artificial intelligence and Machine
Learning technologies.
- The calorie tracking feature
Users can track their calories by adding food items into the respective field, so the system can
calculate whether they consumed the required daily number of calories
- Connectivity of the app with a wearable device
The application can allow integration with fitness bands. This way, they can always be able to log
their food intake and physical activities done daily.
- Custom Diet Plans
The app can create and update various diet charts for the app users to achieve different fitness
goals.
- BMR and BMI Calculator
After the registration process is completed by the users, they are asked to enter certain details about
themselves such as weight, height, food preferences, sex, allergies if any, etc. Now, as soon as this
step is done with, a detailed report is generated as per the body measurements and keeping that in
check
- In app Recipe book
- QR or Barcode Scanner for identifying the calorific value of a food item
- Community platform
Feature will allow for users of the application to engage in conversations about health and their
dieting experience.

Mental Health

 Screening Procedure:
o Enter details like age, department of study, socio-economic background, current
feeling (sad, happy, etc)
 Different outcome results:
o Less vulnerable: motivational quotes, daily/weekly challenges.
o Mild: Online consultation (using a bot, if possible)
o Highly vulnerable: Get recommendation to a professional consultant.
Technologies

The application consists of two parts (at a high level) being the frontend and backend. The frontend
is what the user interacts with while it also sends messages as a query to the backend detailing the
user’s intentions from which the backend executes those intentions. The need of separation
between frontend and backend is necessary for the fact that a knowledgeable outsider can access
information contained within frontend which cannot be allowed to happen when happening
sensitive information.

Backend

MongoDB is used as the database. Reasoning behind this is that Sleep Science had been developed
before the other determinants and had used MongoDB as its database and allows has ACID
properties for database transactions. Node.js and Express.js being used to run the server as this is
one of the most common technologies and therefore have a lot of maturity and proved useful in
many different contexts. For authentication, JSON Web Tokens are used as they provide an easy to
implement solution to this problem. For the server API, GraphQL is used as it provides a better
solution compared to a REST API because it allows a client to query for specific fields and get only
those back as a response as opposed to the REST API which would just return all the fields.

Frontend

Application Tools Options

There are different ways to build an application. The popular applications are built on Android and
iOS platforms. These days one can build applications that are cross-platform by just using one
programming language. Facebook created a tool to build hybrid applications called React Native. It
uses the JavaScript language and is based on the ReactJS Library. Another tool is called Flutter and is
written in the Dart programming language. It builds web, mobile and desktop application from a
single codebase. The details of each are shown below:

React Native
This is a JavaScript framework that is based on ReactJS to make Android and iOS mobile applications
from a single code. It was created by Facebook in 2015. Popular applications including UberEats,
Facebook, Discord and Walmart, just to name a few, are built using React Native. The benefit of
using React Native is that it has features as pieces of components which can be reused on different
parts of the application. The UI components look like native Android components (e.g., button
component).

[ CITATION Dar \l 1033 ] [ CITATION Rea1 \l 1033 ]

Data is easily transferrable between React Native and an API server using the built-in method in
JavaScript called fetch. An example of an HTTP request via an API to fetch data is given below:

fetch('https://mywebsite.com/mydata.json');

To send data to the backend using a POST HTTP request, with the body containing the data that is
being sent in a JSON format:

fetch('https://mywebsite.com/endpoint/', {

method: 'POST',

headers: {

Accept: 'application/json',

'Content-Type': 'application/json'

},

body: JSON.stringify({

firstParam: 'yourValue',

secondParam: 'yourOtherValue'

})

});

The responses of these requests are received from Promises made by asynchronous actions. The
responses come after the request process is finished. This indicated whether the transfer of data
between the frontend and the backend is successful or not.
The data received from the backend can then be used to display some logical information on the
screen for the user to see. Users can enter their data via an input field component.

Flutter

Flutter is a UI toolkit (SDK) that uses widgets, which are the building blocks of the development of
the application. It is also cross-platform, for web, mobile (Android and iOS) and desktop applications.
It was released by Google in 2018. Flutter uses Dart programming language.

Flutter also has an automated toolset, which makes it easier to make tests after building a new
feature. The debugging process is also smooth with the help of Flutter DevTools. They inspect the
layout, performance, etc of the application.

HTTP, from a package called “package:http/http.dart”, is also used by Flutter to communicate with
the backend and transfer data. An example of fetching data from the server to the frontend is shown
below:

http.get(Uri.parse(‘https://mywebsite.com/mydata.json’));

The data can then be displayed to the users. Input fields are also provided for users to enter their
details [ CITATION Flu \l 1033 ].

Flutter VS React Native

Feature React Native Flutter

Performance Slower because of additional Uses C++ to boost


configurations for events. performance and handle
issues by itself. Faster to
exchange data.

Popularity Has a large community, A slightly higher population on


approximately 93 900 stars on GitHub with 110 000 stars.
GitHub.

Design and Graphics The iOS looks slightly different The app looks the same in iOS
to Android due to different and Android. There is not too
platform requirements. much difference.

Testing Extra configuration for testing. Has built-in testing tools.


Both tools are almost similar when comparing each other. The main differences are what language
each is written with and cross-platform. Flutter is supported by more platforms than React Native
[ CITATION Sku21 \l 1033 ].

Hosting Service

What is Microsoft Azure?

Integrated cloud services and infrastructure to support computing, database, analytics, mobile, and
web scenarios. Azure is an open and flexible cloud platform that enables you to quickly build, deploy
and manage applications across a global network of Microsoft-managed data centers. You can build
applications using any language, tool or framework. And you can integrate your public cloud
applications with your existing IT environment [ CITATION Clo \l 1033 ].

What is Firebase?

The Realtime App Platform. Firebase is a cloud service designed to power real-time, collaborative
applications. Simply add the Firebase library to your application to gain access to a shared data
structure; any changes you make to that data are automatically synchronized with the Firebase
cloud and with other clients within milliseconds [ CITATION Fir \l 1033 ].

What is Amazon web services (AWS)?

We will start by looking at the two most important competitors in the market, Amazon web services [

CITATION AWS \l 1033 ] and Microsoft Azure, From host advice.com we find a nice summary from
the user ratings which shows clearly how Microsoft is a better competitor when it comes to
Reliability, Pricing, user friendly, and features and AWS seems to only better Azure when it comes to
Support as shown in the table presented below [ CITATION Edw21 \l 1033 ].

User ratings Aws Microsoft Azure


Reliability 4.3/10 6.7/10
Pricing 4.1/10 3.6/10
User friendly 4/10 4.2/10
Support 3.7/10 3.3/10
Features 4.6/10 6.4/10
In another article the founder and CEO of saviant did a similar study and his findings were not
different from the conclusion above. It his quoted words he said.

“It is a very important decision for enterprises to select the cloud vendor. Azure offers hybrid solution,
PaaS, and an array of other beneficial features, which are important for any Cloud strategy today.
Numerous enterprises have witnessed accelerated business growth by migrating to Azure. As a result
Azure comes to the fore as a considerably better choice compared to AWS.” [ CITATION Anu18 \l
1033 ]

Recommendations

Speak to experts within psychology, psychiatry, exercise, etc, to better understand the nature of
screening and to try figure out the best way to screen people is. This goes hand with categorising
users as the way users are screen will directly impact the categories that exist and how to transition
users between these categories.

Furthermore, these experts will also be needed to help provide clarity regarding the different types
of interventions that can be carried out by the application for the different determinants.

The feature set can also be refined more by consultation from the experts spoken about before and
following on from this, the technologies can then be further refined as there will be more needed at
the granular level.

The frontend will be a progress web app. However, research will need to be conducted to ensure
that the iOS platform’s support for progress web apps enables the implementation of the features
we require for the determinants. This is not the same case with the Android platform as it is a lot
more supportive of progress web apps.

The UI needs to be minimalistic in order not to overwhelm the user with features by only showcasing
what would be the most important features for the user to have quick access to but at the same
time allowing for easy access to other commonly less used features.
The recommended hosting service is Microsoft Azure due to it having better customer reviews in
addition to that fact that we potentially can get a discount due to association with UCT/RC&I.
Works Cited

Jones, E. (2021, March 25). AWS vs Azure in 2021 (Comparing the Cloud Computing Giants).
Retrieved from Kinsta: https://kinsta.com/blog/aws-vs-azure/
Dwivedi, A. (2018, July 10). 7 Reasons Why Azure Is Better Than AWS . Retrieved from Saviant
intelligent Solutions: https://www.saviantconsulting.com/blog/7-reasons-why-azure-is-
better-than-AWS.aspx
GraphQL. (n.d.). Retrieved from GraphQL: https://graphql.org/
React Native · Learn once, write anywhere. (n.d.). Retrieved from React Native:
https://reactnative.dev/
React – A JavaScript library for building user interfaces. (n.d.). Retrieved from A JavaScript library for
building user interfaces: https://reactjs.org/
Beautiful native apps in record time . (n.d.). Retrieved from Flutter: https://flutter.dev/
Dart programming language . (n.d.). Retrieved from Dart: https://dart.dev/
The most popular database for modern apps . (n.d.). Retrieved from MongoDB:
https://www.mongodb.com/
Node.js . (n.d.). Retrieved from Node.js : https://nodejs.org/en/
Node.js web application framework . (n.d.). Retrieved from Express: https://expressjs.com/
JWT.IO . (n.d.). Retrieved from JSON Web Tokens : https://jwt.io/
Cloud Computing Services: Microsoft Azure . (n.d.). Retrieved from Cloud Computing Services |
Microsoft Azure : https://azure.microsoft.com/en-us/
Firebase. (n.d.). Retrieved from Google: https://firebase.google.com/
AWS. (n.d.). Retrieved from AWS: https://aws.amazon.com/
Flutter. (n.d.). Retrieved from Flutter: https://flutter.dev/
Skuza, B., Mroczkowska, A., & Włodarczyk, D. (2021, May 28). Flutter vs React Native – What to
Choose in 2021? Retrieved from Droids On Roids:
https://www.thedroidsonroids.com/blog/flutter-vs-react-native-what-to-choose-in-2021

You might also like