Platform Components

The development platform is the collection of technologies, packages, methods, tools, etc. that you will need to assemble and/or use to make your working software product.

  • Programming languages
    • TypeScript
    • JavaScript
    • HTML/CSS
  • Front end framework: Flutter vs React-Native
    • We decided to go with react native because after a testing both frameworks we came to the conclusion that react-native would be easier for us to pick up and code in.
    • Another reason we decided on react-native is that we wanted to create a asynchronous build with an appealing UI.
    • We also believe react-native has a higher cap for scalability than flutter does which is desired if a future team would like to pick up our project another semester.
  • We are creating a phone app and we plan to use Firebase as our backend.
    • Firebase was recommended as the best backend framework to use together with react-native by fellow peers, our coach, and other sources.
    • Firebase is free and is relatively easy to learn compared to other databases such as SQLAlchemy and MongoDB.
    • Our team also wanted the challenge of learning to use a new database.
  • We do plan to both graph and chart data and React Native provides multiple libraries to help with that.
    • react-native-charts-wrapper, react-native-svg, and react-native-chart-kit are the most well known charting libraries available to us with react native and those are the ones we plan to use to relay data collected back to the user.
  • Developed for both iOS and Android as requested by client

Documentation

TechnologyProsCons
JavaScript– Good for cross platform development
– Rich ecosystem of frameworks and libraries
– Very fast for executing programs
– Easy to work with other programming languages
– Capable of front and back-end development
– Many inconsistencies between devices and browsers
– Security issues may arise since users can view JavaScript code
Swift– Simple syntax and fast execution times
– Open source technology with many users in the community
– Easy to scale and add new features
– Client requirement: App must be compatible on both iOS and Android, so Swift is not ideal
– Still a young language
React-Native– Does not compile Javascript into native language so it is fast
– Uses Javascript, which many are already familiar with
– Very popular app development framework
– Allows development on both iOS and Android
– Can be harder to debug
– Limited third party libraries
– Has platform-specific requirements
Flutter– Easy and clear to read documentation
– Allows development on both iOS and Android
– Requires team to learn Dart language
– Compiles Dart language into native language, which could make it slow
– Has hot reload feature to make debugging effortless
Firebase– Base services are free to use
– Easy to set up and use
– Can only use cloud provider
– Limited support for iOS features
– Limited querying capabilities
MongoDB– Very powerful and flexible app development
– Can do very complex queries
– More robust document database with better security
– More complex and difficult to learn
– Faces redundancy in data storage

Client requirements

Our client would like us to create the app in Turkish. We plan to have an English text file where each line/phrase corresponds to a line in an accompanying Turkish text file. This way we can design and test the app in English and then translate it to Turkish when we are complete. Our client also required the app to be compatible on both iOS and Android devices, which is why we selected React Native for its cross platform capabilities.