Mobile Development

Goat-Anon Mobile, Annonymous Social Media Discussion

The Application


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:


Github
group Picutre

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”.

For this project, we decided to use React Native as our programming framework of choice, as it would allow us to develop our application on either a Windows or MacOS operating system and then be able to deploy said application to either Android or iOS. When developing in React Native, one must choose between using vanilla React Native or Expo. Expo is a toolchain that is built on top of React Native and allows users to quickly initialize projects and view them on the Expo client application. The one major drawback of vanilla React Native development is that it requires the use of either Android Studio or Xcode if you wish to deploy to either Android or iOS. As such, it is virtually impossible to develop an iOS application using a Windows machine, because it does not have access to Xcode. Therefore, for this project we did end up using Expo and the Expo Client as our method of development.

group Picutre

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.

blender Picutre

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.

blender Picutre blender Picutre blender Picutre

Demo Video


Check out this demo video we made, showing the application in action.