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.