It's quarantine time, We all stuck at home and have not socialized with others. As students, we became boring and don't know how to find the best way to meet new people, especially when they are having dinner. Introducing the FoodParty! A fast and convenient way for you to meet new friends while eating and socializing in a group!
What it does
FoodParty uses a machine-learning algorithm to recommend specific food party groups to users so that they can eat meals within a cloud cafeteria and socialize with folks who have the same interests in a group.
How we built it
For FoodParty, we have separated the front end and back end. Our mobile app is written in React Native and we used the template from Creative Tim. Our backend was written in python with flask as our back-end framework to implement our API and infrastructure. Our user info is stored in SQLite while the order and group info are stored in firebase. We also use MemoryStore from Google Cloud with Redis engine because it's scalable, secure and it reduces latency, and increases our overall throughput.
Our backend logic is running on the app engine and we emit events to the Cloud function upon each request so that it can then invoke our APIs and store info in our real-time database firebase. The reason we use the Cloud function is that we need to execute transformations while processing our data and the Cloud function is the fastest and the most reliable option. We also build our infrastructure in a container using Dockerfile and run the container in Google Kubernetes Engine because it's flexible and durable. Our recommendation system mainly relies on clustering algorithms. To save money on delivery fees, we use the DBScan algorithm to find restaurants and students close to each other and recommend people to order food in a group. Therefore drivers can pick up as much food in the same place and deliver it to students that live closer. To help students meet new friends, we use k-means algorithms to group people with similar habits and recommend those groups to students while they are eating.
Challenges we ran into
We were struggled to find the best algorithm for our recommendation system and we also struggled as a group to figure out how to efficiently debug in React-Native. We spent a lot of time on how to integrate MemoryStore into our back-end logic and there were also multiple issues with our infrastructure and we spent some time debugging our application in the Kubernetes engine.
Accomplishments that we're proud of
We are proud of building this mobile application with react-native because this is our first time using it. We are also proud of the machine learning algorithm that we decided to use because it was a struggle but we as a group learned so much in terms of statistical data analysis. It's the first time that they use google cloud services for some of our teammates, so we definitely proud of leveraging these technologies in our project.
What we learned
We learned so much about React Native as a group as it was our first time. We also deep-dived and learned a lot about clustering algorithms in general. We also learned MemoryStore as a group and integrated it into our back-end logic which is something really useful for our future project.
What's next for FoodParty
We need to build a more optimized model to analyze the user info so that our recommendation system will be more optimal. We will also need to spend more time adding authentications and security aspects to this project. Not to mention, our user experience can also be improved.