D2. Design Document

Architecture Diagram

Code Repository

The link to the repository can be found here.

Platform Selection

Platform Components

We will use NativeScript (a mix of JavaScript & TypeScript) for the frontend and backend. Because the client is going to be responsible for the project after the semester ends, they requested the use of NativeScript for the project as it is easily used for cross-platform capabilities. The client also requested Firebase to be used as the real-time database. We will also be using various libraries and APIs such as the Bend API and nativescript-ocr.\

Documentation

TechnologyProsCons
NativeScript1. Client preference
2. Good for cross-platform
3. Familiarity with previous languages such as JavaScript
1. No team members have experience in this framework
2. Lack of ready made UI components
3. Harder to debug
React Native1. Cost-efficiency
2. Easy to use and reuse code
3. Popular and well-documented cross-platform frameworks
1. Lower performance than base platforms (i.e. Swift, Kotlin)
2. Updating issues
Firebase1. Client preference
2. Some team members have prior experience
3. Easy to integrate with mobile applications
4. Easy to work with in JavaScript
1. Android-centered
2. Lack of experience in non-relational databases
MongoDB1. Supports many languages1. Free version storage limited
2. Lack of experience in non-relational databases
3. Client non-preference

Client Requirements

Client requested NativeScript framework and Firebase as backend as it is easier for them to use and upkeep. Client does not have experience with Java, Kotlin, Swift, so needs to be in language that they can use and adapt.