acchiang / lettuceeat

0 stars 0 forks source link

LettuceEat

Description

LettuceEat is a platform that enables friends and families to order food and split their bills quickly and effectively. Similar to popular scheduling platform when2meet, LettuceEat allows users to join sessions and pick out menu items on the platform to add to their user profile. One user will then be able to see all the other users' orders in their created session and pay for it. The user paying will also be able to easily calculate how much each person owes them after tips. After more development, we hope to allow users to etransfer the person paying within the app with the click of a single button.

The Project

For young adults who have social gatherings involving group food orders, our responsive web app will ease the process of gathering, consolidating, and outputting individual food orders to be submitted as a group order. The app will store: anonymous users’ data (amount owing, dishes, custom tip amounts, and display name), food menu (dishes), and session (states, and users). Users can access a particular session and make a food order customized to their liking, based on the menu items available in the session. The session leader then takes all the consolidated order data and sends it to a food ordering service (externally from our app, eg. a waiter or UberEats app) to place the order. Additional functionalities we can implement given enough time include user authentication to create custom profiles, saving favourite/previous orders for future use, use of machine learning to automatically input menu items, and/or integration with payment platforms.

Project task requirements:

(Checked off items have been completed. All unchecked items have been investigated, considered in terms of feasibility for our timeline, and discussed for next steps in the future as we extend this project beyond the scope of this course. Viewing the checklist in dark mode on GitHub may be difficult, we recommend switching to light mode for better contrast.)

3-5 minimal requirements (will definitely complete)

Breaking down the minimal requirements:

Ability for users to pick dishes

2-3 rough sketch prototypes of some key tasks of the app:

Page1 Page2

Resources used

Tech from Units 1-5

Unit 1 - HTML, CSS, JS:

Unit 2 - React and Redux:

Unit 3 - Mongo DB:

Unit 4 - Node and Express:

Unit 5 - Release Engineering:

Above and beyond functionality

Next steps

Revisiting our stretch goals:

We have yet to implement WebSockets for real time updates rather than calling multiple apis for updates. We also haven't implemented a scheduled db purge for freeing up space from the sessions collection. In the future, we would like to finish up these stretch goals as well as make the interface of the app more accessible or user friendly by incorporating features such as supporting multiple languages, tooltips, and reading out the menu options. For this app to become even more aligned with what we originally envisioned, we would also like to add a page where users can e-transfer the person paying for the entire bill with the click of a button. This would require more work on authentication and design of the app so there are no security holes. Currently, our menus are manually added to the db. We would also like to automate this process with vision machine learning so that users can take a picture of the menu they want and upload it so that the vision api can process what items are within the menu picture and upload it to the db.

Contributions

Allison: Allison worked on ideating the specs for a reusable internal set of UI components, assembling the components into a skeleton for the front-end, incorporating elements for responsive web design, creating a dark mode and themeable assets, structuring the project repository's directories, standardizing the scripts we use to run the local and production app, deploying the app to Heroku (while connected to MongoDB/Atlas), and adding capabilities for localization. Allison made an active effort to champion accessibiliy for the project, including completing checks to ensure WCAG compliance, investigating localization, and determining further extensions such as adding aria labels for screenreading accessibility.

Christy: Christy worked on setting up authentication of users' apis using JWTs. She worked on a portion of user-persistence by writing apis to read and write to session's collection and updating the client interface with data from MongoDB Atlas. Christy also worked on refactoring code after she connected the project to MongoDB Atlas; created models, routes, controllers, db, configs and validation directories and refactored the code to run within those directories. At the beginning of the project, Christy made the lo-fi mockup of the project on Figma.

Rebecca: Rebecca worked on building front-end components, putting together the basic skeleton of a couple pages, setting up the back-end server using Express, and propagating consolidated data across pages. She also contributed to making improvements to the user interface, like adding basic desktop browser responsiveness and helping out with mid-fidelity designs.

Nick: Nick worked on the ability to create, or join sessions/lobbies. he also worked on setting up new users inside each session/lobby, and the ability for users to log back into their account with persisting data. In addition, he also worked on update logic for user orders and persistence of various other data. As part of software development, he also helped with refactoring code, squashing bugs, adding responsiveness, and changing db schemas (when needed).