Giter Club home page Giter Club logo

lunchlady's Introduction

(Demo available at 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 — thanks Heroku!

(† One of many reasons you should come work with us — there is such a thing as a free lunch!)


Notes

To run the app

  cd lunchlady
  bundle install
  cp config/database.yml.example config/database.yml  # and edit if desired
  rake db:migrate
  rake db:seed    # optional: loads a bunch of restaurants so you can play around. Editdb/seeds.rb and db/seeds/*.tsv to suit
  rails server

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



Behavior

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.

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

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

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.

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

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

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

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

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-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

lunchlady's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

lunchlady's Issues

Add community comments

It would be really nice if people had a shared message board per restaurant so we could communicate details about specific orders to each other.

Installation Errors

When running bundle exec rake db:migrate, I receive the following error.

$ bundle exec rake db:migrate
/Users/bhardin/.rvm/gems/ruby-1.9.3-p0/gems/rake-0.8.7/lib/rake/alt_system.rb:32: Use RbConfig instead of obsolete and deprecated Config.

rake aborted!
No such file or directory - /lunchlady/log/development.log
/lunchlady/Rakefile:4:in `require'
(See full trace by running task with --trace)

Close that order!

People like to order lunch after the lunch order has gone out. This makes Holly feel bad even though it totally isn't her fault.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.