Skip to content

Instantly share code, notes, and snippets.

@SuryaSankar
Last active August 7, 2016 15:59
Show Gist options
  • Save SuryaSankar/2a23f403fa9b85d7ef62637b87a39409 to your computer and use it in GitHub Desktop.
Save SuryaSankar/2a23f403fa9b85d7ef62637b87a39409 to your computer and use it in GitHub Desktop.
Task #1 - Build a multi-category Food products ordering platform

Evaluation Task #1 for Backend Developer Role at Inkmonk.com

Have you watched "Cloudy with a chance of meatballs?" The plot is very simple. Flint is an eccentric genius who has discovered a machine which will manufacture infinite varieties of food by mixing and matching ingredients in a zillion ways. And then a host of bad stuff happens as usual. But that is irrelevant to us.

Let's say Flint wants to create a website where he can offer his food item creation service to everyone in the world. He has contracted you to develop the website for him. Here are his requirements

###Requirements

  1. Right now Flint is planning to let users create their own pizzas, burgers, sandwiches, ice creams, milk shakes and a full course Indian meals. The list won't end with this. He will keep on adding and is planning to add at least 100 kinds of food by the end of next month.

  2. Each of these items can be completely customized by customers as they prefer. Here is how each can be customized. And in each case assume that the choices for each particular property of the food item will keep getting added. Flint will keep adding more kinds of bread, more kinds of topping etc

a. Pizza: Customer can specify the following i. Kind of bread - wheat, oats, mixed, sweet-bread, vitamin-enriched ( more to come ) ii. Shape of pizza - Circular, Triangle, Square iii. Number of slices - upto 12 iv. size of pizza - small, regular, family v. main ingredients - chicken pieces, mutton pieces, potato slices, tomato slices, mushroom slices, chillies, onion slices etc ( customer can choose 1 or more of these to add in a pizza ) vi. Temperature of baking vii. Time to bake in minutes

b. Burger: i. Bread type - wheat , mixed flour, oats, wheat with spices added ( no sweet bread here ) ii. Coating - mayonnaise, mayonnaise made without egg, sauce iii. Filling - potato mash, chicken, cutlet, fish mash iv. Add cabbage filling? Yes or No?

c. Sandwich i. Grill? Yes or no? ii. Time to grill if yes to i iii. Time to toast if no to i iv. Filling - tuna, egg, carrot, tomato, onion etc v. number of slices - upto 4 vi. hot or cold ?

d. ice creams i. Time to refrigerate ii. Temperature of serving ( decreasing from 0 degrees till -40 degrees) iii. Flavor - vanilla, strawberry, pista, mango iv. Type - cup ( available for all flavors ), cone ( not available for mango), bar ( not available for strawberry and pista) v. Add chocolate chips? vi. Topping - honey, litchi, etc vii. If cup, scoop size in number of spoons viii. If Cone - size as small or regular ix. If bar, size as small or regular or large

e. Milk Shake: i. Flavor - strawberry, pista, vanilla ii. add icecream? iii. if yes to ii, what flavor of icecream? vanilla, chocolate, pista etc iv. Temperature to serve v. Glass size - small, large vi. Milk brand - Amul, Aavin, DairyFresh

f. Full course Indian meals i. Rice type - Ponni, basmati, Raw rice etc ii. Sambar type - plain, mango, onion iii. Variety rices to add - lemon, brinji, tomato, etc ( choose more than 1) iv. Add curd? yes or no v. Veg curries to add - One or more. Each can be customized separately as below

g. Indian veg curry i. vegetable - brinjal, potato, cauliflower, ladies finger etc ii. spices to add - white pepper, black pepper, cumin etc iii. Fried or boiled ?

Now allow the user to choose one or more of the different kinds of dishes mentioned above, customize it by choosing any option from the choices given for each variety and create his own dish.

He should then be able to place an order for those dishes. Each dish can be ordered as n number of items ie 8 pizzas of a particular combo he created, 9 icecreams of a combo, 10 pizzas of another combo etc. Allow him to place an order together for all these items.

The price of each combo will depend on the ingredients. Each ingredient will have a price when added to 1 item, ie adding strawberry flavor to 1 milkshake will cost Rs. 10. For 10 milkshakes, it would have costed 10 x 10 = 100. The cost of all ingredients together will constitute the cost of a dish the user creates. Allow Flint to specify the cost of each ingredient like he prefers. He will keep modifying them as per demand.

And we don't want the user to be asked to sign up while creating the dishes. But get him to sign up before placing the order.

Also, once ordered we want to pack and send the order in a package. Flint wants his customers to be able to track that also if possible using a tracking id.

That's all for now, but the requirements could pile up in future. For example we should be ready to tackle a request where Flint will want to give each customer an individual page where they can view all the pizzas they have created, all ice creams they have created etc. Its not asked yet. But please do keep that in mind while designing this site.

If you are familiar with Python, you can use Flask-SQLalchemy ( which is the stack we use at Inkmonk ) or Django. If not, please use any language and stack you are comfortable with, as long as your code neatly demonstrates your design decisions.

How you implement the user interface - the url endpoints your application will have, are all left to you to design. If the interface is barely functional, that is enough.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment