Platform Selection

Frontend

Choices:

  • React Native
  • Angular.js
  • Swift
  • Java

React Native:

Pros:

  • Create a native app for iOS, Android, and a web app with a single code base
  • Uses JavaScript, a language we have experience with

Cons:

  • Not a lot of experience with the framework on the team

Angular.js:

Pros:

  • Team has experience with the framework
  • Uses TypeScript/JavaScript

Cons:

  • Only for web applications

Swift:

Pros:

  • Can be used to make an iOS application

Cons:

  • Would require us to use separate code bases for the different versions of the app

Java:

Pros:

  • Plenty of experience on the team
  • Can be used to make an Android app

Cons:

  • Would require us to use separate code bases for the different versions of the app

We have chosen to use React Native since it does exactly what we want, create native apps for mobile devices aimed at usage by the student caregivers as well as a web app like the client asked us to make.

Backend

Choices:

  • Python
  • Node.js

Python:

Pros:

  • Team has experience
  • Libraries that can connect to databases (SQLAlchemy)
  • Same language as our machine learning framework

Node.js:

Pros:

  • Some of team has experience
  • Same language as frontend

Cons:

  • Don’t have experience with libraries to connect to databases
  • Not the same language as machine learning framework

We’ve chosen Python due to the entire team having experience working with it as a backend and it just made sense to us since the machine learning framework we are using is written in Python.

Database

Our client has suggested we use SQLite as a database to start with for user data and an S3 bucket to store CSVs from our headset, so we will be heading these suggestions for storage.