Although my first year of college was incredibly busy, I really wanted to make the best of the social experience that my school offered. However, it would happen only too often that I would be invited to a party that was supposedly gonna be a rager and show up to an empty apartment (very awkward situation). It would happen equally often that I would not be informed of a party happening on Friday and then be told the next day about the "greatest night" of everyone's lives. Some nights I would assume something was happening, get dressed up, leave my dorm, and wander campus looking for parties only to find nothing and have wasted a good chunk of my time. This app makes sure no young adult will ever again go through the agony that I did.
What it does
This app allows any user to start a party by providing their location, the party's name, and its sponsor. The geocoding API uses the user's latitude and longitude at the time of the party's creation to construct an address. Users can see any parties created near them through the list view. However, they can only view parties on the map (Google maps API) that are certified "moves." This means that the party has received n promotions. For this demo n will be 1. When a user promotes a party, they also provide a "Litness" rating. The ratings of all users who promote a party are averaged and displayed when a user clicks on the party. In addition to this the ages of the users who promoted the party are averaged and displayed when the user clicks on the party, so any user can get a rough estimate for the age of the party-goers. Each party also has a chat room for users to describe the party. The algorithm only lets users within 0.2 miles of the venue promote the party or enter the chat room to prevent trolling. Finally, users can use the Google Vision API to take a picture of the room, get an estimate for the number of heads and use this as an indicator of the size of the party. Other users can rank all parties by their proximity, their "litness", their promotions, and the number of people at the party based on the Google API's scan. Finally, it only takes one click to get directions to a party from a user's current location.
How I built it
I built this app using Android Studio for the logic and UI design and firebase to store all parties and users as objects. I also used Firebase for authentication. I used Android Studio's library for determining the user's location and I pull data from the Realtime Database to compare parties' locations to users' locations. Every-time a user is authenticated, Firebase provides a unique user id. Under each unique id I store the user object under the parent node user. I also use this id to store any parties that the user creates. This implementation prevents one user from having several parties and keeps the data organized. I also used this id to store pictures for each party.
Challenges I ran into
The hardest part of this app was creating a messaging system that updated in real time with Firebase dependencies. I eventually did this by storing an integer in the Realtime Database , instances, that kept track of the number of messages. Because Firebase uses a hashmap like structure, each message required a unique id. I used (number of Instances) + 1 as the unique identifier. In addition I used the party's unique identifier to store each number under. This maintained a unique id for each message and allowed for easy access to data.
Accomplishments that I'm proud of
I am proud of being able to properly process user data and store it, as well as using algorithms to sort user data by certain specifications and creating a system that allows for rating of all parties. Finally, I believe that the WhatsTheMove? system creates a clear hierarchy for parties depending on the type of user. Some people prefer parties near them. Some people prefer wild parties. Some people prefer parties with many people. Some people prefer parties with very few people. This system allows each user to find their ideal party.
What I learned
I learned how to create a chat room, how to store and modify data in a realtime database, and how to create a pretty slick UI on android.
What's next for WhatsTheMove?
I am looking for funding so that I can advertise it and spread it to the iPhone.