Platform Requirements
The platform is being developed using Swift and SwiftUI which handle both our frontend and backend needs. We were somewhat limited in choices because the app is required to be available on iOS. Webapps and Andrioid were not needed. None of the team has done iOS development before so we elected to choose Swift, as it had the strongest pros and easiest learning curve. The database will be hosted on firebase because of it’s easy setup and it’s limited use throughout the project which will result in no hosting fees. We are not using any graphing or charting components, or doing anything else that may warrant external packages.
Client Requirements
Our client requested that the app be available on iOS and specifically formatted for iPhones. He does not need any additional interfaces. The client’s requested functionality does not warrant any outside packages other than database connectivity. As the client is non-technical, a priority for us has been to ensure that our platform selection will not impact the app’s ability to function in the future. We chose platforms that are mainstream and that we are confident will be maintained far into the future.
Programming Languages
Technologies | Pros | Cons |
Swift / SwiftUI ✅ | *Designed to be fast and efficient. It’s built specifically for iOS with performance optimization in mind. *Strong type safety and error handling mechanisms, reducing the likelihood of runtime crashes *Apple provides extensive trainings resources *Seamless integrating with Apple Ecosystem | *Newer Language with less support for existing libraries *Limited support with non-apple platforms *Nobody in our Team knows Swift |
Objective-C | *Legacy & mature existing codebase *Fully compatible with C++, allowing seamless integration with C++ libraries and existing codebases. | *Nobody in our team knows Objective C |
UIKit | *Mature framework *Offers stability and reliability *Large support Community | *Lots of boilerplate code *Lacks the flexibility needed for highly customized or complex user interfaces |
Databases
Technologies | Pros | Cons |
Firebase ✅ | *Easy to use, has a lot of accessible documentation *Base services are free (should be plenty for our app) *Provides a realtime database *Provides authentication services * Team knows Firebase | *Limited control in the application, no customizability with the provided services *Limited query capabilities *Is not free if the application needs to scale significantly |
GraphQL | *Strong typed schema *Efficient queries compared to other query language APIs *Simplified data fetching *Team has experience using it | *Increased complexity *Steep learning curve for others |
SQL | *Allows for a relational data model *Scales very well *Team has a ton of experience | *Requires a lot of resources (disk space and memory) to operate well *Unsure where we would host |
Other
Technologies | Pros | Cons |
Github ✅ | *Team has a lot of experience using *Highly trusted *Integrates directly with xcode | *Merge conflicts are not easily addressable |
Bitbucket | *Merge conflicts are easily addressable *More functionality without paying | *Not as trusted *Team lacks experience using |