This challenge should meet 'most' of the 👍 learning objectives for Phase 2. Read through these before you start and after completing each release to guide your learning.
You will create a menu application based on THIS MOCKUP and the releases below. Start from the skeleton code provided and submit a pull request with all releases completed.
DO NOT MERGE YOUR PULL REQUEST TO MASTER
- Your app should be hosted on Heroku. Start by pushing up the basic skeleton. If you are unable to push to Heroku, move forward with the other releases until you can get help doing so.
- Once on Heroku, push every time you finish a release and verify that application is functional on the server.
- Update the README in your GitHub repo to reflect your app's functionality (ie - tell what it does) every time you finish a release.
- Add a link to your Heroku app from your README.
- Create a migration and model for Menus.
- Add validations.
- Test your model in IRB. Verify that you can create Menus with correct information and get errors when you try to create a Menu with invalid input.
- Create the first view you see in the Mockup the Menu. (Don't worry about styling yet).
- Implement create and read actions for your Menus
- Use Rspec, Shoulda, and Capybara to test your Menu model and integration.
- Create the migrations and models necessary for Items.
- Add validations.
- Test your Items data model using IRB.
- Create the Items View
- Implement create and read actions for your Items.
- Use Rspec, Shoulda, and Capybara to test your Item model and integration.
- Create a many-to-many relationship between items and menus.
- Using IRB, test your data model. Verify that you can assign Items to a Menu; and then, see all the Items that belong to a given Menu; and given an Item, see all the Menus that Item is on.
- Create the Items on Menus View (don't worry about styling yet). In the Items on Menus View, the drop down should be filled with all possible items.
- Use Rspec, Shoulda, and Capybara to test your models and integration.
- Use AJAX to Implement Adding and Deleting items from menus on the Items on Menus View
- Use AJAX to implement the "Add Item" button on the Items View.
- Use AJAX to implement the "Add Menu" button on the Menus View
- Verify existing tests still pass (hint: turn on JavaScript for your Capybara tests)
- Use JavaScript and HTML 5 to validate your forms before submission.
- Use the Active Record
errors
to display errors to the form after submission.
- Add CSS to make it beautiful. (At the minimum it should look like the mockup).
- Go through your entire app and make certain that each line is as clear, concise, and readable as you can make it.
This feature is optional.
Choose one or more of the following features to add to your program. Be sure to document in your README which one you choose.
- Add Users with encrypted passwords.
- Add an API for an outside service.
- Add a Gem that YOU wrote.
- Add Authentication (with Twitter or another service).
- Feature of your choice.
- See the resources file for our cohort.