This application takes the developer thought the process of building a web-application using angular. The application is loosely based on Google phone gallery. Each commit is a separate lesson teaching a single aspect of angular.
- Generic installation instructions.
 - Mac DMG here
 - Windows download from here. (You will also need 7 Zip to unzip the node archive)
(and don't forget to add 
node.exeto your executable path) 
- The application filesystem layout structure is based on the angular-seed project.
 - There is no backend (no server) for this application. Instead we fake the XHRs by fetching static json files.
 - Read the Development section at the end to familiarize yourself with running and developing an angular application.
 
You can check out any point of the tutorial using git checkout step-?
To see the changes which between any two lessons use the git diff command. git diff step-?..step-?
- Initial angular-seed project layout
 
- We have converted the seed application by removing all of the boiler-plate code.
 - We have added single static HTML file which shows a static list of phones. (we will convert this static page into dynamic one with the help of angular)
 
- Converted static page into dynamic one by:
 - Added unit test, which mostly shows how one goes about writing a unit test, rather then test something of value on our mock dataset.
 
- added a search box to demonstrate how:
 - added an end-to-end test to:
- show how end-to-end tests are written and used
 - to prove that the search box and the repeater are correctly wired together
 
 
- replaced the mock data with data loaded from the server (in our case the JSON return is just a
static file)
- The JSON is loaded using the $xhr service
 
 - Demonstrate the use of services and dependency injection
- The $xhr is injected into the controller through dependency injection
 
 
- adding phone image and links to phone pages
 - css to style the page just a notch
 
- making the order predicate for catalog dynamic
- adding 'predicates' section to the view with links that control the order
 - ordering defaults to 'age' property
 
 - css sugar
 
- Introduce the [$route] service which allows binding URLs for deep-linking with views
- Replace content of root controller PhonesCtrl with [$route] configuration
 - Map `/phones' to PhoneListCtrl and partails/phones-list.html
 - Map `/phones/phone-id' to PhoneDetailCtrl and partails/phones-detail.html
 - Copy deep linking parameters to root controller 
paramsproperty for access in sub controllers - Replace content of index.html with ng:view
 
 - Create PhoneListCtrl view
- Move code which fetches phones data into PhoneListCtrl
 - Move existing HTML from index.html to partials/phone-list.html
 
 - Create PhoneDetailsCtrl view
- Wire [$route] service to map 
/phanes/phone-idto map to this controller. - Empty PhoneDetailsCtrl
 - Place holder partials/phane-details.html
 
 - Wire [$route] service to map 
 
- Fetch data for and render phone detail view
- $xhr to fetch details for a specific phone
 - template for the phone detailed view
 
 - CSS to make it look pretty
 - Detail data for phones in JSON format
 
The following docs apply to all angular-seed projects and since the phonecat tutorial is a project based on angular-seed, the instructions apply to it as well.
- run 
./scripts/web-server.js - navigate your browser to 
http://localhost:8000/app/index.htmlto see the app running in your browser. 
Requires java.
- start 
./scripts/test-server.sh(on windowsscripts\test-server.bat) - navigate your browser to 
http://localhost:9876/ - click on: capture strict link
 - run 
scripts/test.sh(on windowsscripts\test.bat) - edit files in 
app/orsrc/and save them - go to step 4.
 
Requires ruby and watchr gem.
- start JSTD server and capture a browser as described above
 - start watchr with 
watchr scripts/watchr.rb - in a different window/tab/editor 
tail -f logs/jstd.log - edit files in 
app/orsrc/and save them - watch the log to see updates
 
angular ships with a baked-in end-to-end test runner that understands angular, your app and allows you to write your tests with jasmine-like BDD syntax.
Requires a webserver, node.js or your backend server that hosts the angular static files.
Check out the end-to-end runner's documentation for more info.
- create your end-to-end tests in 
test/e2e/scenarios.js - serve your project directory with your http/backend server or node.js + 
scripts/web-server.js - open 
http://localhost:port/test/e2e/runner.htmlin your browser 
app/                --> all of the files to be used in production
  css/              --> css files
    app.css         --> default stylesheet
  img/              --> image files
  index.html        --> app layout file (the main html template file of the app)
  js/               --> javascript files
    controllers.js  --> application controllers
    filters.js      --> custom angular filters
    services.js     --> custom angular services
    widgets.js      --> custom angular widgets
  lib/              --> angular and 3rd party javascript libraries
    angular/
      angular.js            --> the latest angular js
      angular.min.js        --> the latest minified angular js
      angular-*.js  --> angular add-on modules
      version.txt           --> version number
  partials/         --> angular view partials (partial html templates)
config/jsTestDriver.conf    --> config file for JsTestDriver
logs/               --> JSTD and other logs go here (git-ignored)
scripts/            --> handy shell/js/ruby scripts
  test-server.bat   --> starts JSTD server (windows)
  test-server.sh    --> starts JSTD server (*nix)
  test.bat          --> runs all unit tests (windows)
  test.sh           --> runs all unit tests (*nix)
  watchr.rb         --> config script for continuous testing with watchr
  web-server.js     --> simple development webserver based on node.js
test/               --> test source files and libraries
  e2e/              -->
    runner.html     --> end-to-end test runner (open in your browser to run)
    scenarios.js    --> end-to-end specs
  lib/
    angular/                --> angular testing libraries
      angular-mocks.js      --> mocks that replace certain angular services in tests
      angular-scenario.js   --> angular's scenario (end-to-end) test runner library
      version.txt           --> version file
    jasmine/                --> Pivotal's Jasmine - an elegant BDD-style testing framework
    jasmine-jstd-adapter/   --> bridge between JSTD and Jasmine
    jstestdriver/           --> JSTD - JavaScript test runner
  unit/                     --> unit level specs/tests
    controllersSpec.js      --> specs for controllers
For more information on angular please check out http://angularjs.org/