(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!)
- Code for the lunchlady app is at https://github.com/infochimps/lunchlady
- The app is based on my fork of the Greendog rails template.
- Built in a weekend with emacs, heroku, infochimps and Rails 3; uses devise, ajaxful_rating (@mrbrdo & @kamui’s jquery inflection); html5-boilerplate + compass + the compass 960.gs port + sass + hassle; friendly_id; hashgrid.js
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
- 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.
- 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
- 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
- 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.
- 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
- 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
- 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
- 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
- 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