Goat-Anon Mobile: Mobile Development

2020-02-10





Github Repo

Description

Goat Anon Mobile is a social media mobile application that promotes anonymity and less filtered content than other social media applications. All users will be allowed to add text content to the main timeline as well as add comments and reactions to posts. A feature to add customizability for the user is Filtering the posts based on certain characteristics. Data will be stored on a database to allow users to access public data remotely from any device.

Built Using:

React Native, Expo, Firebase, Visual Studio Code

Design:

When designing our mobile application, we first wanted to get a sense of what our application should look like from a UI perspective. We began by creating a few simple UI mock-ups using the design tool Canva. Canva is an online design platform that allows users to easily create graphics, posters, logos, presentations, and even UI sketches. We intended to have the application split into 4 different views, the “Loading Page”, the “Main Activity”, “Creating a New Post”, and “Viewing a Post”.

Firebase vs. SQLite

After exploring the positives and negatives of using an SQL database compared to Firebase, we concluded that Firebase would most likely be our best option. Firebase is convenient in that it provides a near full back-end system, and allows us to connect directly to the database from our Expo React Native project. Traditionally, applications require both a back-end and a front-end, however for this application, we can retrieve our information purley in our front-end and rely on Firebase to manage our data and delivery on the back-end. When comparing an SQL data retreival system to a NoSQL data system, we found that the SQL systems generally perform faster due to thier structured nature. Therefore, if we were to expand this application, we would likely migrate to a fully operation SQL database with a dedicated back-end system. However, for this project, Firebase would more than suffice.

Implementation

After exploring the positives and negatives of using an SQL database compared to Firebase, we concluded that Firebase would most likely be our best option. Firebase is convenient in that it provides a near full back-end system, and allows us to connect directly to the database from our Expo React Native project. Traditionally, applications require both a back-end and a front-end, however for this application, we can retrieve our information purley in our front-end and rely on Firebase to manage our data and delivery on the back-end. When comparing an SQL data retreival system to a NoSQL data system, we found that the SQL systems generally perform faster due to thier structured nature. Therefore, if we were to expand this application, we would likely migrate to a fully operation SQL database with a dedicated back-end system. However, for this project, Firebase would more than suffice.

Using Firebase’s Realtime Database, we structured our data in such a way as to keep track of what data belongs to which post. Firebase is very good at managing the state of child nodes, and thus we treated each instance of a new post as a new child. Within each post there exists the pertinent information associated with said post, as well as a child containing all of the associated replies to the post. By structuring the data in this manner, we can easily see when new data is created and therefore when an update to the application should occur.



Demo Video

Though it is a bit cheesy, here is a demo video we made showing the application in action.