Platform Selection

Introduction

The client made no specific requirements on which platform components we should use to build the SafeEats application. However, the purpose of the application does place constraints on development. For SafeEats to reach a large client base as well as be convenient and easily accessible to the public, the preliminary version of the application should start as a mobile application. Two main operating systems for mobile devices are Apple’s iOS and Google’s Android, so we would want platform components that allow simultaneous development for both operating systems. As the project is just starting out, we want to focus on creating a minimum viable product with our specified requirements. Moreover, the client would like to use free platforms.

Additionally, this project is a continuation of another COMP 523 team from the Spring ‘22 Semester. The team chose to use JavaScript, React Native, and Firebase after going through the pros and cons for different alternatives. Here is the link to their Platform Selection documentation.

Still, we wanted to look at alternatives to understand the other possible platform components that could work for developing SafeEats and any future applications. We used some of their pros and cons, while also looking further into the aspects of other possible platform components.

Pros and Cons

Frontend Development Frameworks

FrameworksProsCons
React Native+ JavaScript (familiar language)
+ Android and iOS (cross-platform development)
+ Native UI widgets, default and adaptable
+ Open and user-friendly documentation (access to resources and support)
+ Hot reloading (automatic and fast)
+ Good performance
+ 33000 libraries and packages
+ Effective for MVP (minimum viable product)
– Harder to maintain, such as updating to future versions
– Issues in debugging
– Slow in adding latest features
– Weaker security due to use of JavaScript
– Lower performance with increased complexity
Swift+ Open-source community for learning
+ Ease in debugging app and error handling
+ Easy to scale
+ Better safety and performance
– Focused on iOS apps (extra effort to transition to android)
– 3800 packages (limited)
– Restricted to development through Mac with Xcode software
– Must re-compile before displaying new changes on app- Initial learning curve
Flutter+ Android and iOS
+ Highly customizable widgets, also default widgets
+ Ease of maintenance, due to automated built-in tools
+ Clear and comprehensive documentation
– Dart, unfamiliar language
– Support cross-platform development, however may lag if designs differ
Kotlin– Designed for desktop apps
Angular+ Familiar framework– Unable to create native mobile apps for iOS and android
AngularJS– Discontinued in Jan 2022 and stopped developing in 2016
– Doesn’t meet needs of modern web development

Backend/Platform-as-a-Service

PlatformsProsCons
Firebase+ Detailed documentation
+ Real-time data synchronization
+ Free (limited)
+ Easy-to-use, cross-platform app development SDKs
+ Highly scalable
+ Strong security
+ NoSQL database, with option between realtime database and Firestore database
+ Services
+ Authentication (quick, able to authenticate with phone number, email, Google, Facebook)
+ Messaging
+ Notifications (firebase cloud messaging, FCM)
+ Offline Support (offline data persistence)
+ Cloud storage (cloud-based NoSQL)
+ Crash reporting/analytics (firebase analytics and firebase crashlytics)
+ Remote configuration (change feature/behavior of app without publish app update)
+ Machine learning
– Costly once scale up
– Generalist service for messaging (scaling and complexity limits)
– Different from relational data models (more difficult)
– Not open-source
Parse+ Open-source framework
+ Runs on any cloud
+ Ease in parse server deployment
+ Choice in file system
– Free self-host, setting up local parse server is difficult
– Difficulty in deploying app
– Need additional platform provider to host app
– Fewer options for authentication
– Simpler notification feature
– No native real-time database feature
– No built-in analytics or crash reporting
– No native offline support
Supabase+ Open-source with community contributions
+ Free (limited)
+ Real-time updates and data sync
+ Authentication and storage
+ Simple cloud deployment (AWS)
+ Autogenerate web API for database
– Limited to PostgreSQL databases
– Self-hosted
– Steep learning curve
– Relatively new with smaller community and resources

In the end, we decided to continue using JavaScript as the programming language, React Native as the frontend development framework, and Firebase as the Backend-as-a-Service application development platform.