PG (PickupGames)

Our application facilitates local pickup games. Users can login and sign up using their phone number, which will be verified by Twilio's SMS API in conjunction with Google's SMS Retriever API. If a new phone number is inputted, the user will create a profile, including their username, date of birth, emergency contact, and their team association. Otherwise, the user will be directed to the main page of the app, which will show a list of upcoming games that the user has already joined. There is also a button that leads to a feed of new games that are looking for players. A user can join a game if and only if certain qualifications are met, such as age.

Since our app requires realtime data for users and involves many types of data, it is important to have a database system that can maintain the relationships among them. Thus, the popular Firebase and AWS Mobile Service options were not considered, as their databases NoSQL. Therefore, we decided to use AWS RDS, which is Amazon's Realtime Database, which can be configured to MySQL. This database system is essential in storing, organizing, and managing our app’s data efficiently in tables, which can then be manipulated based on the app’s needs. In addition, AWS Lambda was used to create functions, written in node.js, to access AWS RDS. These lambda functions were then connected to AWS API Gateway, which allowed us to create an REST API. Then, this api is accessed by the android application using a service called Retrofit, which is a type-safe HTTP client for Android and Java.

User Manual

Database Project Requirement

This guide follows a user called "Christopher" through the app shown by the image gallery.
When first opening the app, Chris is shown the welcome page. Chris then clicks the "Start" button, which leads him to the phone verification page. Since he hasn't created an account before, inputting his phone number results in a "sign up" page, where he inputs his phone number, username, date of birth, emergency contact, and what team he would like to be a part of (teams are similar to those in Pokemon Go). Once he makes his account, he's led back to the phone verification page. This time, when he inputs his phone number, he moves to his profile page.

Chris's profile page has many features. One of which is to modify his emergency contact by clicking on the 3 dots in the top right corner. This brings up a dialog box so that he can modify his emergency contact. Chris can also look at the team stats. There are 4 teams: Google, Apple, Amazon, & Facebook. He can sort and see which teams have the most members and which have the least.

Going back to his profile page, there is a button that allows Chris to create a game. There are currently 4 sport options: Swimming, Basketball, Tennis, & Soccer. Choosing a sport and pressing "Next" results in courts that host that specific sport. Once a court is chosen, Chris can fill out the details. After creating a game, Chris is led back to his profile page where a list of games he's joined is shown. Clicking on a game pops up a dialog that shows all relevant information, including participating players. Tapping the players will result in a toast of their information, including their emergency contact. Since Chris is the creator of the game, he also has the power of deleting the game.

When Chris is done, he can just log out from the menu item in the 3 dots in the top right corner. However, Chris wants to join another game, so he logs back in, clicks the Feed button, and decides he wants to join a basketball game. He clicks the game for more information, looks at Kevin's information, and then decides to join the game. The game is subsequently added to his profile. However, he remembers that he's busy at the specified time of the basketball game, so he quits the game.

Built With

Share this project: