How to handle data persistence in our apps is an unavoidable topic for discussion in any project. Our team initially decided on having a typical backend server that communicates with a database. We thought of using a Python/Flask to interact with a NoSQL database such as MongoDB or Google Datastore. However, after some research, I found out about Firebase, and it has become a game changer for our project.
Firebase is essentially Google’s mobile application development platform that helps you build, improve, and grow your app. What makes it special (together with other vendors such as Amazon’s AWS or Micorsoft’s Azure) is that it offers “backends as a service” without the need for developers to deploy their own backends for retrieve data. It contains all the security necessary to allow “direct” access to our stored data from our app. Specially made for app development, Firebase’s backend infrastructure includes and is not limited to file storage, data storage and analytics. (https://firebase.google.com/)
For our language app, we need a storage to store image and audio files and and a database to store the metadata. Firebase will allow us to build both under the same project. Cloud Firestore is the NoSQL database offered in Firebase. It is a document based database that will help us keep our data in sync across client apps through real time listeners. In addition, it offers offline support so we can create responsive apps regardless of network latency (https://firebase.google.com/docs/firestore). Cloud Storage is the storage in Firebase. It will enable our app to store arbitrary files and obtain a HTTP URL for each store (https://firebase.google.com/docs/storage).
Overall, Firebase has become a powerful tool used in mobile development nowadays without having the need to design database backend servers. Our project will definitely benefit from all the resources Firebase can provide moving forward, so we can spend more time building our mobile application itself.