Inspiration

How many of you end up eating lunch or dinner alone in a restaurant? As Waterloo students, we all have heavy class schedules. Sometimes we only get 40 minutes before the next lecture. Often, you ask your friends to have lunch together, but the time doesn't work out, or they want to eat different things. That's when our app come into play. Users can pre-set their preferences, shake their phone, and quickly get matched with someone who also wants to eat at the same restaurant at that moment. It's a great way to learn new things, make new friends, and find a potential date in limited time.

What it does

With our Android mobile application, users create an account and set their personal preference for which restaurant they would like to visit, what kind of people they want to talk to, and their preferred topics such as literature or music. Then, users shake their phone to be matched to other users who also shook their phone within the last five minutes, also want to eat at the same restaurant, and have similar interests. After they get matched, we offer a chat feature to help users meet at the restaurant successfully.

How we built it

We extensively used the Firebase SDK for Android. The real-time Firebase database powers the matching functionality, allowing users to find matches instantly. The chat function is also powered by Firebase's database, rapidly syncing messages between the two devices. Finally, the Firebase Cloud Messaging API is used to show a notification when a match is found.

Challenges we ran into

Unfortunately, Firebase's query language cannot specify some complex queries in our app, and the example code provided by Firebase did not support further filtering results clientside. Instead, we simply hid the unwanted items by setting their table cells to have 0 height. Firebase Cloud Messaging is designed for use with a backend; however, we wanted to create an application that is purely front-end. To that end, we decided to send Cloud Messaging requests from the clientside directly. While this presents a security risk, it's suitable for a prototype.

Accomplishments that I'm proud of

We get it down! With everyone's collaboration within the group. Nothing can be more proud than this!

What I learned

Firebase, Google platform, Android

Not good enough, keep learning, keep practicing

What's next for Mingler

Build Mingler with proper architecture, add proper backend. Build more features to make the platform more stable, like reputation system. Eventually, free to use for every student in UWaterloo (potentially other universities).

Built With

Share this project:

Updates