Ganked By Housing

By William Cai and Edward Yuen

Week 1

During the first week of our project, we spent most of our time discussing on the more finer details about our application. This included talking about what features we wanted exactly and more clearly defining the use-case we intended for our app. The two use-cases we were considering were a tinder-like application where users could simply swipe and be prompted with rentals postings or a more search-based approach similar to a Facebook group like UCSB Housing or UCSB Free & For Sale. We opted to define our application to be more like Tinder as we could incorporate many more android type development features such as things like gestures and custom views.

In terms of actual development, we spent a significant amount of time researching Firebase and understanding the different tools that were available to us. We found that things like Firebase OAuth and things like Maps API's could help solve simple problems like login and location to allow us to focus more on other development tasks. We also spent some time outlining the different activities we would have in our application as well as the general flow between these activities. This was pretty much it for the first week with mostly research rounding out most of our work -- we intend to begin coding within the next two weeks.


Week 2

In week 2, we continued our research on potentially useful API's outlined in the last update and solidified the structure and general flow of our application. We will begin developing our application in the coming week.


Week 3

In week 3, we added a number of different features to our application. We incorporated the create account and login feature that lets user register for their accounts and also change their emails/passwords for the time being. Users in this application also have an associated Profile Picture which they can also change using the photos on their phone.


Week 4

In week 4, we optimized our signup and login feature by making organized FireStore collections and FireStorages to store user information. We've also enhanced the look of the layouts of the signup and login activities. Finally, we've added a bottom navigation bar to switch between activities.


Week 5

In week 5, we added features that allow users to make listings as well as view a list of listings made by other users. Similar to HW3, we made each listing into a card, which is stored in a card array. Using an arrayadapter, we display all the cards in a listview. The information in each card is stored and retrieved from Firebase FireStore and Storage.


Final report

For our app, we used the following API's:

  • Google Firebase Authentication: For account creation and login features. The user's email and password are retrieved from editTexts and are used to register an account which is stored in our Firebase authentication database. Firebase handles the authorization for us so we don't have to worry about matching users to passwords and also encrypting the passwords properly for security reasons. This allows us to work on other features which is very useful. The login and sign-up is also very extendable as a result of this as we can add numerous different login options to generate accounts such as Facebook login, Instagram, and etc,.

  • Google Firebase Firestore: To store user information, such as the user's real name, location, email address, phone number, and user ID. The user provides this information during signup and can change the location and phone number while in the profile activity. This API was also used to store house listings, which are basically "cards" that contain several editTexts and a profile picture. The cards are stored inside an arraylist, and are displayed in the "My Listings" activity using an arrayadapter. The listings are also pulled from the Firebase Firestore under the "View Listings" activity but are converted into custom objects before getting passed to the custom cardViewAdapter which allows us to swipe through our cards like Tinder.

  • Google Firebase Storage: To store the user's profile picture as well as the listing pictures. We associated each user profile picture with a specific user and each listing picture with a specific listings to that the information can be pulled together when we look at "My Listings", "View Listings", and "Profiles".

Throughout the project, we struggled primarily with deciding on what features the app should have. Implementing the features was also a challenging task, as it required a lot of research and careful coding to avoid having conflicts between features.

Video Demo (Link to youtube)

https://www.youtube.com/watch?v=uJxXulMUUcs&feature=youtu.be