We have all found ourself in a situation where pizza has to be ordered for a large group. Most times, the people in charge of such gatherings would just ballpark a number of pizzas and split the order between cheese and pepperoni. We decided there should be an easier way to figure out what to order without anyone having to compromise their favorite toppings.
What it Does
When a user enters the what2pizza app, they are prompted to enter their name, and then are directed to a page that allows them the option to either create or join a room. If the user opts to create a room, they will be asked to fill out their preferred toppings list and then will be directed to a screen that displays a four-digit code identifier for their room, as well as a list of everyone else in the room. Users joining a room simply need to type in that four-digit code on their end and select their topping list to be added. When the group leader is ready, they can generate the ideal pizza order for that group. This uses an algorithm to select similar topping preferences from the pool of preferences such that every user in the room will have a half pizza that they are satisfied with. The app also has the capability to connect to a Domino’s Pizza API so that the generated order can be placed from within the app.
How We Built
The mobile app front-end was built with React Native, cross-compatible on iOS and Android. The backend was written with Socket.io and Node.js, which powers all of our real-time updates. The server is hosted on Heroku, so anyone in the world can access it.
Challenges We Ran Into
Synchronizing users across the platform, Learning the differences between React and React.js and Defining the correct algorithm for generating pizza orders.
Accomplishments We are Proud of
We are proud of having a synchronous app experience across users in a room. For most of us, this was our first time working with React Native and socket.io and doing mobile development. It’s really cool to have a final product that will run on all of our phones.
What we Learned
Most of us learned React Native for the first time and we all learned socket.io. We also improved our collaboration skills virtually.
What's Next for what2pizza
There are several ways that this application could be scaled or improved. For demonstration purposes, our list of toppings is only of size 4. This could always be updated to include all possible Domino’s pizza toppings. Another update that could be made is improving our communication with the Domino’s API such that the group leader is able to input their more sensitive information (address, credit card) and that information is handled safely to place and pay for the pizza order. Additionally, stress testing to see what the maximum total number of users our application can handle would be an important step to take in the future.