This is a rails app for ordering beverages at a brewery. It is an online ordering system that offers both administrator and consumer interfaces. You set up your credit card to open your tab and order as many beverages as your bac can hold.
- Use TDD to drive all layers of Rails development including unit, integration, and user acceptance tests
- Design a system of models which use one-to-one, one-to-many, and many-to-many relationships
- Practice mixing HTML, CSS, and Rails templates to create an inviting and usable User Interface
- Differentiate responsibilities between components of the Rails stack
- Build a logical user-flow that moves across multiple controllers and models
- Understandings
- Devise for Authentication
- A pre-existing, externally created CSS/HTML design/template
- Getting Started
- Browse all drinks
- Browse drinks by category
- Add a drink to tab
- View tab
- Remove a drink from my tab
- Increase the quantity of drinks in my tab
- Log in, which should not clear the tab
- View another user’s private data (such as current order, etc.)
- Checkout (until they log in)
- View the administrator screens or use administrator functionality
- Make themselves an administrator
- Authenticated Non-Administrators
- do everything Unauthenticated Users can do except "log in"
- log out
- view their past orders with links to display each order on that order display page there are:
- items with quantity ordered and line-item subtotals
- links to each item description page
- the current status of the order
- order total price
- date/time order was submitted
- if completed or cancelled, display a timestamp when that action took place
- if any item is retired from the menu:
- they can still access the item page
- they cannot add it to a new cart
- view another user’s private data (such as current order, etc.)
- view the administrator screens or use administrator functionality
- make themselves an administrator
- Create item listings including a name, description, price, and a photo
- Modify existing items’ name, description, price, and photo
- Create named categories for items (eg: "Small Plates")
- Assign items to categories or remove them from categories. Products can belong to more than one category.
- Retire a item from being sold, which hides it from browsing by any non-administrator
Dashboard:
- the total number of orders by status
- links for each individual order
- filter orders to display by status type (for statuses "ordered", "paid", "cancelled", "completed")
- link to transition to a different status:
- link to "cancel" individual orders which are currently "ordered" or "paid"
- link to "mark as paid" orders which are "ordered"
- link to "mark as completed" individual orders which are currently "paid"
Access details of an individual order, including:
- Order date and time
- Purchaser full name and email address
- For each item on the order
- Name with link to item page
- Quantity
- Price
- Line item subtotal
- Total for the order
- Status of the order
- Update an individual order
- View and edit orders; may change quantity or remove items from orders with the status of pending or paid
- Change the status of an order according to the rules as outlined above
- Modify any personal data aside from their own
- Data Validity
- An item must have a title, description, and price.
- The title and description cannot be empty strings.
- The title must be unique for all items in the system
- The price must be a valid decimal numeric value and greater than zero
- The photo is optional. If present it must be a valid URL format.
- A user must have a valid email address that is unique across all users
- A user must have a full name that is not blank
- A user may optionally provide a display name that must be no less than 2 characters long and no more than 32
- An order must belong to a user
- An order must be for one or more of one or more items currently being sold
To support the evaluation process, please make the following available via the rake db:seed task in your application:
- At least 20 items of varying prices
- Some of the items should be attached to multiple categories
- At least 5 categories with a varying number of member items
- At least 10 sample orders, with at least two at each stage of fulfillment (ordered, completed, cancelled)
- Normal user with full name "Franklin Webber", email address "demo+franklin@jumpstartlab.com", password of "password" and no display name
- Normal user with full name "Jeff", email address "demo+jeff@jumpstartlab.com", password of "password" and display name "j3"
- User with admin priviliges with full name "Katrina Owen", email address "demo+katrina@jumpstartlab.com", password of "password", and display name "kytrinyx"
-
Your project must be "live" on the web for your peers to evaluate it. We recommend you deploy it on Heroku.
-
Your README file on Github should contain a link to your live site.
-
On the production site, setup the URL path /code to redirect the user to the Github repository.
- Beer Images: http://www.wix.com/website-template/view/html/778?originUrl=http%3A%2F%2Ftile_lp
- Brewery Databases: http://www.brewerydb.com/about/beer101
- Beer Icons: http://www.iconspedia.com/icon/beer-700.html
- More icons: http://findicons.com/search/beer
- Cool icons: http://www.ryandavidkoziel.com/wp-content/uploads/2013/09/bw-glasses.png