{"action":"closed","issue":{"url":"https://api.github.com/repos/TIY-GVL-FEE-2015-August/assignments/issues/271","labels_url":"https://api.github.com/repos/TIY-GVL-FEE-2015-August/assignments/issues/271/labels{/name}","comments_url":"https://api.github.com/repos/TIY-GVL-FEE-2015-August/assignments/issues/271/comments","events_url":"https://api.github.com/repos/TIY-GVL-FEE-2015-August/assignments/issues/271/events","html_url":"https://github.com/TIY-GVL-FEE-2015-August/assignments/issues/271","id":109136878,"number":271,"title":"6.3-Backbone-Contacts_Laura-Harris","user":{"login":"Laura-Harris","id":13736080,"avatar_url":"https://avatars.githubusercontent.com/u/13736080?v=3","gravatar_id":"","url":"https://api.github.com/users/Laura-Harris","html_url":"https://github.com/Laura-Harris","followers_url":"https://api.github.com/users/Laura-Harris/followers","following_url":"https://api.github.com/users/Laura-Harris/following{/other_user}","gists_url":"https://api.github.com/users/Laura-Harris/gists{/gist_id}","starred_url":"https://api.github.com/users/Laura-Harris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Laura-Harris/subscriptions","organizations_url":"https://api.github.com/users/Laura-Harris/orgs","repos_url":"https://api.github.com/users/Laura-Harris/repos","events_url":"https://api.github.com/users/Laura-Harris/events{/privacy}","received_events_url":"https://api.github.com/users/Laura-Harris/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-09-30T17:03:36Z","updated_at":"2015-10-06T19:30:36Z","closed_at":"2015-10-06T19:30:36Z","body":"# backbone-contacts-collections\r\n\r\n## Description\r\n\r\nCreate an app that lets you manage a list of Contacts. Each Contact can (but not required to) have:\r\n\r\n1. email\r\n2. name (first, last)\r\n3. phone number\r\n4. twitter username\r\n5. linkedin\r\n\r\n## Objectives\r\n\r\n### Learning Objectives\r\n\r\nAfter completing this assignment, you should…\r\n\r\n* Understand the difference between creating your own Backbone constructors and Backbone instances\r\n* Understand and be comfortable using:\r\n    - `Backbone.*.extend(...)`\r\n    - `Backbone.View`, `Backbone.Model`, `Backbone.Collection`\r\n* Understand what `this` refers to inside of the methods you extend from a Backbone Constructor\r\n* Understand manipulating and using Backbone Models and their events\r\n* Understand manipulating and using Backbone Collections and their events\r\n\r\n### Performance Objectives\r\n\r\nAfter completing this assignment, you be able to effectively use\r\n\r\n* Use Backbone.View's `events`,`tagName`,`className`,`initialize`,`render` properties.\r\n* Attach a Backbone.View's `el` to the DOM\r\n* Render out a View and it's connected data (from a Model or Collection) with an external template\r\n* Backbone.Model's\r\n    - getters/setters\r\n    - validation\r\n    - built-in events\r\n* Backbone.Collection's\r\n    - get/set/add/create/filter/map/reduce/reset\r\n    - sorting\r\n    - built-in events\r\n\r\n## Details\r\n\r\n### Deliverables\r\n\r\n* A publicly visible website (gh-pages, divshot, or heroku)\r\n\r\n### Requirements\r\n\r\n* No JSHint warnings or errors\r\n* All specifications met below\r\n\r\n## Easy Mode\r\n\r\nCreate an app that has a form for entering Contact information (described above).\r\n\r\n- Some of the informaton can be optional\r\n- The app should re-render automatically (by use of the Backbone events)\r\n- You should wireframe and design a basic layout before starting this app.\r\n- Your app should use HTML/SCSS extensively for styling.\r\n- You should have one Backbone.View sub-classes: a HomeView constructor.\r\n- You should have a Contact Model constructor and Collection that uses the Contact model\r\n\r\n## Normal Mode\r\n\r\nUsing a persistence layer (i.e. http://tiny-lasagna-server.herokuapp.com/collections/contacts), add the ability for your Backbone Models/Collections to load from the data resource.\r\n\r\nAny subsequent page refreshes should re-render existing data on the server.\r\n\r\n## Hard Mode\r\n\r\nAdd user authentication with Facebook or a Login form. Your app should show a login/registration page if a user is not logged in, otherwise it should show the HomeView.\r\n\r\nWhen a user logs in, they have access to a private list of Contact items that no-one else can view.\r\n\r\n## Nightmare Mode\r\n\r\nInstead of Backbone Views, use React to render the views and handle the DOM events.\r\n\r\n> Check your notes and examples for pointers."}}