lunchlady

Efficiently order and track your group's shared lunches, vote on restaurants, and manage menu links

OTHER License

Stars
17

(Demo available at "http://lunchladydemo.heroku.com":http://lunchladydemo.heroku.com -- do whatever you like over there; secret passphrase is "opensesame")

At infochimps, we buy lunch for everyone in the office(†), and it's always a pain to wrangle everyone's order in on time. Hooray weekend app!

Lunchlady will

  • Help you know which restaurants are the best-loved, or overpriced, or haven't been ordered from in a while
  • Remember everyone's past orders, if they don't get one in on time
  • Make your office manager happy, which is the secret to a successful business

You can "try it out here":http://lunchladydemo.heroku.com -- thanks Heroku!

(† One of many reasons you should "come work with us":http://infochimps.com/ -- there is such a thing as a free lunch!)


h2. Notes

To run the app

You will want to set a signup shibboleth by editing config/app_config.yml. On heroku, you can instead set an environment variable: @heroku config:add SIGNUP_SHIBBOLETH=your_watchword@


!https://github.com/mrflip/lunchlady/raw/master/public/images/lunchlady_doris.png!


h2. Behavior

h4. As a visitor to the homepage

  • I should be invited to sign in or sign up if I'm not logged in.
  • If I am logged in, I should be able to quickly place my order and know that it was received.

h4. As a person placing an order

  • It's easy to find the restaurant's menu

  • It's straightforward to type in a new order and its price

  • I can call up an old order if I always get the same thing

  • I can enter an order for another person

  • I'm prevented from creating two orders for the same person and meal

h4. As a Lunchmeister organizing a meal

  • I can create a new meal efficiently
  • I get a few good robo-suggestions for the restaurant, but have absolute supreme unquestioned authority to choose any restaurant
  • I can change the restaurant for a meal
    • It should be possible (but difficult) to do this once any orders have been set.
    • changing the restaurant should delete all current orders

h4. As a Lunchmeister finalizing a meal

  • I can see
    • the phone number and other details of the restaurant
    • all the orders that have been placed
    • the total expected cost and the suggested tip
    • whether orders from people who typically order lunch are missing
  • I can enter a "best-guess" order for somebody who hasn't ordered
  • I can see metrics on each restaurant to ask for a discount, and to make sure any minimum monthly order target is hit.

h4. As a team optimizing for overall joy

  • We can see
    • actual overall price per person for each restaurant
    • how long it's been since we ordered from the restaurant
    • how much people love the restaurant
  • We can make sure everyone's favorite restaurant is cycled through, even if it's not the team consensus
  • So that metrics are accurate, I should not be able to edit a past meal or order, and should not be able to create ones in the unrealistic future
  • restaurant votes are fair:
    • each user's votes are adjusted to their mean
    • only include regulars

h4. So that we can have visitors over

  • I can invite a guest to the office and pay out-of-pocket for their meal
  • We can have visitors over who will pay for their own meal.
  • Correct accounting for team, company guests and co-paid guests

h4. As a team that is efficient and open, but not too open

  • I should be able to place an order for another person

  • If I'm logged in I can do anything, but am discouraged from doing stupid things

  • It's easy for a guest to sign up given a minimal token

  • It's difficult for a griefer to get an account

  • If I am not logged in, the only pages I can view are

    • the homepage, which shows only some stuff
    • the login, signup, and password recovery pages

h4. Account

  • list all users:
    • all users (with link), email, avatar, number of orders, is_local
  • show any user:
    • user info
    • user metrics
    • rated restaurants
    • past orders
  • log out:
    • link on top when I'm signed in, not when I'm signed out.
  • log in:
    • link on top when I'm signed out, not when I'm signed in.
  • register new account:
    • link on top when I'm signed out, not when I'm signed in.
    • prompts for full name, email, is_local,
  • edit my account:
    • name, email, is_local
    • change password

h2. TODO

  • Stats:

    • Average per-head order price of restaurant
    • 'unfairness' rating of restaurants (Joe likes X a 5, everyone else a 2, how often should it cycle thru)
  • Time of day vs. lunchtime vs. weekends

  • Do we want to be able to say "out of office"?

  • Meals other than lunch

  • --add "restaurant inspections":http://infochimps.com/datasets/city-of-austin-restaurant-inspection-scores--2 from infochimps--

  • --make it so you have to type a magic word into the signup box to create a new account--

  • --validations--

  • --Remember past orders for restaurant and suggest them to user (rails part works, but need javascript to inject into text field)--

  • --Vote for a restaurant--

  • --How long since we last ordered from a restaurant--

  • --consensus rating--

heroku console Rails.cache.clear --app lunchlady