Easy Stir Fry

From ESE205 Wiki
Revision as of 21:37, 10 December 2018 by GPassamonti (talk | contribs) (→‎Budget)
Jump to navigation Jump to search

Final Project Proposal: Easy Stir Fry (ESF)

Weekly Log
Proposal Presentation
Easy Stir Fry Website
Demo Day Poster

Project Overview

Easy Stir Fry, or ESF for short, is an academic project for a course labeled ESE 205. Given the open-ended task to build something, really anything applying software, mechanical, or electrical skill, our tetam (Stephen & Garrett) decided to create an online platform for ordering Stir Fry from Bear's Den. The User Interface gives our users the opportunity to check current wait times, place an order online, and receive live updates about when the order will be ready. Our unique value comes by way of User Profiles, enabling ESF members to save their favorite dish and place the order in half-the-time.

Why choose this project?

The lines in Bear's Den are getting worse as incoming classes grow in size. WashU students are standing outside the Stir Fry area, waiting for 15, 20, sometimes even more than 25 minutes for their meal! We are all incredibly busy people, so why waste time standing around waiting for food?

Easy Stir Fry will allow users to monitor current wait times and be notified when their order is ready-to-go! Say goodbye to the guessing game that is finding out when your order is ready. Say goodbye to the several trips to and from your BD table, or even suite. It is our mission at ESF to make ordering a painless, even enjoyable process.

Team Members

  • Stephen Richardson [Student]
  • Garrett Passamonti [Student]
  • Ethan Shry [TA]
  • Jim Feher [Professor]

Objectives

Overall: Build a online application to decongest Bear's Den during peak meal hours and make the dining experience more enjoyable for both students and employees.

  • Develop two sets of online consumer facing applications using Javascript and HTML
  • Create a database using MySQL Workbench to provide a repository for data such as Order ID, current wait time, profile data, and more
  • Using Express Node.js, create a modifiable interface(server) between our database and UIs
    • Student facing: Projected wait time, ption to place order online, customizable user profile
    • Cook Facing: Order ID input space, two lists of orders (online and live), option to either cancel or finish the order
  • Obtain raw data on average Stir Fry wait times during different hours of operation and using this to create a function for projecting wait time
    • [Reach] This type of modeling might be a stretch, but we hope to offer this capability
    • Use current number of orders along with prior data to project wait times for users
  • Allow users to order Stir Fry online
  • Notify users when their order is ready via text
  • Prove concept through prototyping at Bear's Den with a random assortment of students using diverse web browsers
    • Requires contacting dining services and providing an interface for BD workers to use
  • Pitch to WashU Bon Apetit and Dining Services, displaying proof-of-concept results and providing an implementation plan to see if this project may be put to real use
  • [Reach] Apply concept to other stations, the Grill will be our first target
  • [Reach] Notify users when their order has been processed and is being made, similar to say, Dominoes
    • Through this service, provide information on when order is processed and project pick-up time

Challenges

  1. Neither students know any languages involved in coding this project and will have to learn before engaging in mapping and beginning to develop the application.
  2. Neither student understands the concept mapping behind creating a database or server and how they link to a consumer facing interface.
  3. It will be hard to sell Dining Services on our idea, especially with limited background merits in coding. Once the system is finalized, it may be easier to approach BD and ask to test ESF's viability day-to-day.
  4. Will take some ingenuity to gather data regarding wait time estimates for the Stir Fry station and create some form of equation or algorithm to predict an accurate wait time
  5. Getting users to adopt ESF and use it regularly when ordering Stir Fry, the application will have to be well-marketed to students frequenting BD.
  6. Acclimating the Stir Fry staff to use ESF day-to-day.

Gantt Chart

Gantt Chart

Budget

Item Description Cost Source Link
Server Space AWS Lightsail Instance $10 PS-GO|Brand|Desktop|SU|Compute|Lightsail|US|EN|Text|Lightsail&s_kwcid=AL!4422!3!311769066157!p!!g!!lightsail%20aws&ef_id=Cj0KCQiAurjgBRCqARIsAD09sg-9f289bp3tvTMOrfkH8WgeU6AwdMRsWlvZ8tjWdefbwtY1wqpM8EcaAqq3EALw_wcB:G:s Lightsail]
Twilio SMS Service -- Notify For Automatic Text Notifications (Sign-Up and Order Ready) $20 Twilio Pricing
Total Cost $30

Design and Solutions

Setup List
  1. Download Atom LTS and include necessary packages
    1. Atom-beautify (aesthetics)
    2. Atom-runner (run html from localhost)
    3. Platform-ide-terminal
  2. Download Git (link to online BitBucket repository)
  3. Create an AWS file with a public IP through Bitnami
  4. Making the instance live and accessible through the web
Module List
  1. HTML file for each webpage with corresponding css file
    1. Necessary to create the UI, display values from the database, and work with our users
  2. MySQL Workbench table to store all site data
    1. Has several different columns to identify profile IDs, order IDs, in/out time of orders, order details, user credentials like name, phonenumber, password, and saved order, and to hold wait time
  3. A node.js server which includes all necessary database 'GET' and 'POST' routes
    1. This file acts as the peanut butter between the two slices of bread (UI & Database)
    2. Pushes and pulls inputs to and from the UI into or out of the database
  4. Order and Account classes
    1. Each class was used to create Order and Account objects as a way to more easily manipulate database table data
    2. Each object's constructors were identical to the columns of the corresponding table in the database
    3. Various methods such as a sendSMS() method and a sendOrder() and sendAccount() method were created to more efficiently query the database
  5. Javascript files when necessary to use routes when called by the UI
    1. These ajax files are equivalent to the jelly in and PB&J,
    2. They are absolutely necessary to implement otherwise the server code would not be able to speak to the user interface
    3. This code is what pulls information directly from the interface then uses server routes to push on towards the database
Features
  1. Sign-up/Sign-In
  2. Stir Fry online order capability including capability to use 'Saved Order'
  3. Profile Editing
  4. Wait Time screen
  5. SMS thanking user for signing up and an SMS when the user's order is ready
  6. Worker Home page with capability to finish/cancel an online order
  7. Order Details page from which a chef can construct the user's order
  8. Ability to Sign-Out

Results

The Easy Stir Fry team is extremely excited about our end product. We worked very hard to complete the bulk of our objectives and put together an aesthetically pleasing, functional interface. As shown above, Easy Stir Fry was demoed without a hitch and was well-received. But, there is room for improvement, and there can always be more features added to improve function and ease of use. By the end of the semester, we lacked an adequate Wait-Time calculator, limited ourselves to only one food station, were unable to put together a working "Real-order" route, and did not successfully pitch the concept to Dining Services.

As stated earlier, much, if not all of the technical skills necessary for completing this project had to be learned concurrently with its completion. As such, the team is proud of our accomplishments, but we also realize there were barriers which could have been avoided. The largest one being the point in the semester from which we really started to work hard came too late. In that earlier time, we could have taken data from BD and began work on our Wait Time calculator. It became easier, as our familiarity with the languages grew, to build and fix our existing code; however, even despite hours of work, routes like adding a "Real-order" did not make the final cut. For this feature in particular, there required either a new table set-up, or a new methods file to create separate, real-order objects, both of which we deemed to be unnecessary challenges as demo-day grew closer.

The team has come out of this semester with a functional product which we hope to see create new opportunities for continued growth and learning in the future. All the languages we learned, and functional knowledge we now possess due to our project is applicable for many uses down the line such as web-development, server management, and database construction.

Images