Birds of a Feather

WINTER 2022

Birds of a Feather is an Android application that uses bluetooth to connect with classmates that have taken similar classes as you. Simply enter your name, photo and classes taken, and you will be able to start connecting with potential friends in your current classes. Some features include various sorts for your convenience, saving sessions for the different classes you find classmates in, and the ability to favorite/wave to classmates.

Database

In the first milestone, I was mainly in charge of setting up the database using Android's Room, which was essentially SQLite. I created schemas to make sure we are storing the correct data for Students and Courses inputted. In the next milestone, I also added a Sessions table for the sessions feature. From these tasks, I learned a lot about foreign keys and how valuable designing a good schema is.

Nearby Messages API

One of my other major tasks throughout the quarter was implementing Google's Nearby Messages API, as well as mocking it for testing. The API has two main classes: a MessageListener that handles receiving and sending messages to the server, and a Message class that composes what you send to the server. The client utilizes bluetooth to facilitate the sharing of Messages. I created both a Mock Class for testing and the integration of the actual API, since the API was difficult to test without two Android devices. By creating the mock, my team was able to progress on the various features without being blocked by testing real bluetooth integration.

Sorting

I used the Factory Design Pattern to encapsulate the different sorts for a user's list of students found. This made it both easier to read and change when necessary, and adheres to the Single Responsiblity Principle for any given class.

Skills Gained

  • Android Studio and Android Development
  • Google Nearby Messages API
  • Unit Testing (JUnit/Robolectric), UI Testing (Espresso Tests), Continuous Integration (GitHub Actions)
  • Design Patterns: Strategy, Adapter, Observer, MVP, Factory, Builder
  • Effective Teamwork with Standups, Pair Programming

Screenshots

BoF Home Page BoF Student Profile BoF Student Matches
BoF Sessions BoF Database Design