Online food ordering for a cafe/restaurant: looking for a push in the right direction

I'm working on building out an online food ordering system for a cafe—my first dip into Drupal Commerce. The concepts are starting to make sense, yet while i'm pretty proficient with Drupal, i've got a long way to go to feel in any way competent with Commerce.

This post is simply to ask for some direction. Here's some goals:

Define all the menu items (mostly sandwiches and salads) as a combination of specific ingredients (breads, proteins, cheeses, veggies, condiments, etc.) and display them in a kind of "menu view".

I'd like user experience to work like this:

While on the "Menu" page, all item titles are click-able. When the user does so, s/he'll then be prompted with a set of options, allowing the user to

  • keep the included ingredients of the selected items the same (default behavior)
  • opt of of included ingredients
  • add additional ingredients which aren't part of this specific menu item (for a fee, depending on the ingredient)
  • choose bread type (if sandwich)
  • choose any other conditional options based on the selected item
  • add the item to the shopping cart when it's modified to the user's liking

Lastly, i'll need some kind of rule requiring the user to select a pick-up date/time when a new order is started.

Most of this idea comes from looking at the way Jimmy John's handles online ordering (via the orderTalk system). I'm certain most readers of this post aren't normally ordering Jimmy John's online, so here's a screenshot, simply to give you an idea of what i'm going for:

So yeah, i'm just looking for things like "You'll need these contrib modules..." (http://drupal.org/project/commerce_custom_product) maybe? Or "You'll need to define a product type for each menu category" or "You'll need to define a line item type for every single menu item..."

Any insight, small or big, is hugely appreciated.

Posted: Jan 25, 2012


MrPeanut on July 23, 2012

Hi Stephen,
I'm now looking to do the same thing. Did you have any luck working on this project?

FastEddy760 on July 24, 2013

Any luck, input, lessons learned, choose another option?
Its awesome?
Would never try that again?

joshmiller Josh Miller on July 24, 2013

Basically, the restaurant or food ordering concept requires "building" your product and each change to the default product could affect the final price. I illustrate a kind of simple, one-dimensional look at crafting this using the module you mentioned:

To take this one step further, you could attach a secondary term field to your product and use that as your "template." This sandwich has mayor, lettuce, ham, and tomatoes. (four terms) And the customer wants to change the template by removing mayo (which normally costs $0.30) so the pricing rule would have to know mayo is not on the sandwich but is a part of the "template" and should be noted as a decrease in final price (award the customer $0.30 for not using your mayo). That would either take some custom conditions or a lot of Rules components to step through.