EasyEats is a social media platform centered around food, where users can create profiles, connect with friends, and share restaurant reviews. With the ability to rate restaurants and view friends' reviews, it provides an engaging experience for food enthusiasts to share and explore new culinary delights.
3-5 minimal requirements
3-7 standard requirements
2-3 stretch requirements
HTML + CSS + JavaScript
Some of our components are styled in CSS, with each file corresponding to a component. The logic of our application is also written with JavaScript.
React + Redux
Our application is built with multiple React components, with state management done with Redux. With Redux, we are able to have a single source of truth, reduce time and resources spent on unnecessary, duplicate API calls, as well as manage asynchronous behaviour in a more organized and predictable manner.
Node + Express
Our server’s API is implemented in Express to make calls to both our database and the Google Place API. We also used the Node Package Manager to easily manage and utilize external dependencies, such as Axios, Material UI, and Mongoose.
MongoDB
Our database information is stored in MongoDB, and we interact with the data through Mongoose. The data we store includes the profiles of our users, their ratings, and the collections of each user.
One feature that we are proud of is our authentication system, which uses session cookies and an encrypted password storage. We also used the Google Places API and Photos API, which allows our application to use real-world, up-to-date data about restaurants in Vancouver and display photos of their food and reviews. The ratings, which we perceive as the largest collection in our application, is also lazily loaded, with only a subset of the total documents being fetched at a time in order to improve the runtime of our application. Finally, we finished our stretch requirement of creating a recommender system. The model organises the search results in terms of popularity and rating, promoting restaurants that users might like more to be at the top of their searches.
Our search functionality currently does not include any filters or ability to sort by ratings/prices/etc., and only returns restaurants in Vancouver, so this is definitely an area that could be improved in the future. One of our stretch requirements was to implement a recommendation system for recommending restaurants to users using ML. However, due to Google API’s limitations, we were not able to fully fetch all the data needed to build a recommendation system which made it difficult for us to build a mode, so we resorted to a hard-coded model. In the future we could try to implement a recommendation system that utilises live Google API data.
Cedric
Malcolm
Wendy
Tammy
Wonhak