Bootstrap Angular app.
Use Jade templates.
Static phone list.

 * Added static HTML list with two phones into index.jade
Angular template with repeater.

  * Converted the static HTML list into a dynamic one by:
    - creating PhoneListCtrl controller for the application
    - extracting the data from HTML into a the controller as an in-memory
      dataset
    - converting the static document into a template with the use of
      `ngRepeat` directive which iterates over the dataset with phones,
      clones the ngRepeat template for each instance and renders it into the
      view
  * Added a simple unit test to show how to write tests and run them
    with Karma and Jasmine
Replace JavaScript by CoffeeScript.
Interactive search.

 * Added a search box to demonstrate how:
   - the data-binding works on input fields
   - to use a filter
   - ngRepeat automatically adjusts the number of items in the view

 * Added a scenario test to:
   - show how end-to-end tests are written and used
   - prove that the search box and the repeater are correctly wired together
Phone ordering

 - Add "age" property to the phone model
 - Add select box to control phone list order
 - Override the default order value in controller
 - Add unit and e2e test for this feature
XHR and dependency injection

 * Replaced the in-memory dataset with data loaded from the server (in
   the form of static phone.json file)
   - The json file is loaded using the $http service
 * Demonstrate the use of services and dependency injection
Phone images and links

 * adding phone images and links to detail pages
 * add end-to-end test that verifies our phone links
 * CSS to size the thumbnails and style the page just a notch
Use Stylus stylesheets instead of plain CSS.
Routing and app partitioning

 * Introduce the $route service which allows binding URLs for deep-linking with
   views
   - Create 'phonecat' module which governs the entire app and contains
     $routeProvider configuration
   - Map `/phones' to PhoneListCtrl and partials/phones-list.jade
   - Map `/phones/<phone-id>' to PhoneDetailCtrl and
     partials/phones-detail.jade
   - Copy deep linking parameters to root controller `params` property for
     access in sub controllers
   - Replace content of index.jade with ng-view div
 * Create phone list route
   - Preserve existing PhoneListCtrl controller
   - Move existing HTML from index.jade to partials/phone-list.jade
 * Create phone details route
   - Empty placeholder PhoneDetailsCtrl controller
   - Empty placeholder partials/phane-details.jade template
Phone details view

 * Fetch data and render detail view
   - PhoneDetailCtrl controller fetches details for a specific phone
   - template for the details view
 * CSS to make the details page look "pretty"
Checkmark filter

 * Added custom checkmark filter
 * Update phone detail template to use the filter
 * Added unit test spec for the filter
Image swapping with ng-click

 In the phone detail view, clicking on a thumbnail image, changes the
 main phone image to be the large version of the thumbnail image.

 - Define mainImageUrl model variable in the PhoneDetailCtrl and set its
   default value
 - Create setImage controller method to change mainImageUrl
 - Register ngClick handler for thumb images to use setImage controller
   method
 - Add end-to-end tests for this feature
 - Add CSS to change the mouse cursor when user points at thumnail images
Custom service and $resource

 * Replaced $http with $resource
 * Created a custom service that represents the $resource client
Merge pull request #2 from jmafc/brunch_bower

Reconstruct master as if Brunch Bower integration were available from the beginning