This is the second blog post in a series for the Online Capstone Project – CS 467 – at Oregon State University Ecampus, Fall 2022.
The goal of Gone Local, my Capstone Project, is to produce a fully functioning mobile application that can act as a platform for the “Local Organic Market”. With only eight weeks to complete this project, I need to be smart and selective about the technologies I choose. The technologies I use to build this application should be platform-agnostic so that I don’t have to build different applications for iOS and Android, and they should be easy to pick up on the fly, as I have never made a mobile application before now.
The best platform-agnostic frameworks for mobile development in 2022 are Flutter, made by Google, and React Native, made by Meta. There is a lot of debate over which of these two frameworks is the very best, but I don’t have time for debate… I only have eight weeks! I choose React Native because it is a JavaScript framework, which is a language that I’m very familiar with. I have even made a few plain React applications, so I should be able to pick up React Native with no issue.
I am lucky that there exists a front-end framework for mobile development which I can so easily pick up, but can I be so lucky to find an equally intuitive back-end framework for mobile development? Yes, I can! I choose Firebase, an app development platform by Google. Firebase isn’t your typical NoSQL database; it’s a whole Back-End as a Service (BaaS). Firebase ships with a huge array of built-in functionality that I simply don’t have the time or patience to implement. These built-in features include monitoring of performance & user engagement, A/B testing, crash detection & analysis, offline syncing, user authentication, and much more. I shouldn’t have any issue picking up Firebase on the fly because I’ve used Google’s Cloud Firestore, which is essentially Firebase without the extra features.
Now, with React Native and Firebase, I can quickly make a beautiful, feature-rich mobile application, but with a bit of outside help, I can make my application even more useful. A platform for the Local Organic Marketplace would be inefficacious without an on-platform method for transactions; to this end, I choose the Stripe API. With React Native I can make nice looking screens that show invoices & past purchases, with Firebase I can store & analyze the transaction data, and with Stripe I can enable those transactions to happen within the app.
Similarly, as a location-based application, Gone Local would be inadequate without integration of the powerful Google Maps API. I will build a map feature with React Native, I will store the farms’ location data (and other farm data) with Firebase, and with the Google Maps API I will get information about Organic Farms that don’t yet have an account with Gone Local.
Without these two APIs, Stripe and Google Maps, I could build a complete application, but it would be a less interesting. For the purposes of the Online Capstone Project, I consider the integration of these APIs to be a “stretch goal”. If I’m not able to reach my stretch goal by the end of these eight weeks, I plan to finish the job soon after. In fact, I plan to continue adding features to the Gone Local app long after the Online Capstone Project concludes.