@ngdoc overview
@name Tutorial
@description

A great way to get introduced to Angular is to work through this tutorial, which walks you through
the construction of an AngularJS web app. The app you will build is a catalog that displays a list
of Android devices, lets you filter the list to see only devices that interest you, and then view
details for any device.

<img src="img/tutorial/catalog_screen.png">

Work through the tutorial to see how Angular makes browsers smarter — without the use of extensions
or plug-ins. As you work through the tutorial, you will:

* See examples of how to use client-side data binding and dependency injection to build dynamic
views of data that change immediately in response to user actions.
* See how Angular creates listeners on your data without the need for DOM manipulation.
* Learn a better, easier way to test your web apps.
* Learn how to use Angular services to make common web tasks, such as getting data into your app,
easier.

And all of this works in any browser without modification to the browser!

When you finish the tutorial you will be able to:

* Create a dynamic application that works in any browser.
* Define the differences between Angular and common JavaScript frameworks.
* Understand how data binding works in AngularJS.
* Use the angular-seed project to quickly boot-strap your own projects.
* Create and run tests.
* Identify resources for learning more about AngularJS.

The tutorial guides you through the entire process of building a simple application, including
writing and running unit and end-to-end tests. Experiments at the end of each step provide
suggestions for you learn more about AngularJS and the application you are building.

You can go through the whole tutorial in a couple of hours or you may want to spend a pleasant day
really digging into it. If you're looking for a shorter introduction to AngularJS, check out the
{@link misc/started Getting Started} document.







# Working with the code

You can follow this tutorial and hack on the code in either the Mac/Linux or the Windows
environment. Options for working with the tutorial are to use the Git versioning system for source
code management or to use scripts that copy snapshots of project files into your workspace
(`sandbox`) directory. Select one of the tabs below and follow the instructions for setting up your
computer for your preferred option.

<doc:tutorial-instructions show="true">
  <doc:tutorial-instruction id="git-mac" title="Git on Mac/Linux">
    <ol>
      <li><p>Verify that you have <a href="http://java.com/">Java</a> installed by running the
following command in a terminal window:</p>
      <pre><code>java -version</code></pre>
      <p>You will need Java to run unit tests.</p></li>
      <li><p>Download Git from the <a href="http://git-scm.com/download">Git</a> site.</p>
      <p>You can build Git from source or use the pre-compiled package.</p></li>
      <li><p>Clone the angular-phonecat repository located at <a
href="https://github.com/angular/angular-phonecat">Github</a> by running the following command:</p>
      <pre><code>git clone git://github.com/angular/angular-phonecat.git</code></pre>
      <p>This command creates the <code>angular-phonecat</code> directory in your current
directory.</p></li>
      <li><p>Change your current directory to <code>angular-phonecat</code>:</p>
      <pre><code>cd angular-phonecat</code></pre>
      <p>The tutorial instructions assume you are running all commands from the angular-phonecat
directory.</p></li>
      <li><p>You will need an http server running on your system. Mac and Linux machines typically
have Apache pre-installed, but If you don't already have one installed, you can <a
href="https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager">install
node.js</a>. Use <code>node</code> to run <code>scripts/web-server.js</code>,  a simple bundled
http server.</p></li>
    </ol>
  </doc:tutorial-instruction>

  <doc:tutorial-instruction id="git-win" title="Git on Windows">
    <ol>
      <li><p>You will need Java to run unit tests, so run the following command to verify that you
have <a href="http://java.com/">Java</a> installed and that the <code>java</code> executable is on
your <code>PATH</code>.</p>
      <pre><code>java -version</code></pre>
      <p></p></li>
      <li><p>Install msysGit from <a href="http://git-scm.com/download">the Git</a> site.</p></li>
      <li><p>Open msysGit bash and clone the angular-phonecat repository located at <a
href="https://github.com/angular/angular-phonecat">Github</a> by running the following command:</p>
      <pre><code>git clone git://github.com/angular/angular-phonecat.git</code></pre>
      <p>This command creates the angular-phonecat directory in your current directory.</p></li>
      <li><p>Change your current directory to angular-phonecat.</p>
      <pre><code>cd angular-phonecat</code></pre>
      <p>The tutorial instructions assume you are running all commands from the angular-phonecat
directory.</p>
      <p>You should run all <code>git</code> commands from msysGit bash.</p>
      <p>Other commands like <code>test-server.bat</code> or <code>test.bat</code> should be
executed from the Windows command line.</li>
      <li><p>You need an http server running on your system. If you don't already have one
installed, you can install <a href="http://nodejs.org/">node.js</a>. Download the <a
href="http://node-js.prcn.co.cc/">pre-compiled binaries</a>, unzip them, and then add
<code>nodejs\bin</code> into your <code>PATH</code>. Use <code>node</code> to run
<code>scripts\web-server.js</code>, a simple, bundled http server.</p></li>
    </ol>
  </doc:tutorial-instruction>

  <doc:tutorial-instruction id="ss-mac" title="Snapshots on Mac/Linux">
    <ol>
      <li><p>You need Java to run unit tests, so verify that you have <a
href="http://java.com/">Java</a> installed by running the following command in a terminal
window:</p>
      <pre><code>java -version</code></pre>
       <li><p>Download the <a href="http://code.angularjs.org/angular-phonecat/">zip archive</a>
containing all of the files and unzip them into the [tutorial-dir] directory</p>.</li>
      <li><p>Change your current directory to [tutorial-dir]/sandbox, as follows:</p>
      <pre><code>cd [tutorial-dir]/sandbox</code></pre>
      <p>The tutorial instructions assume you are running all commands from your
<code>sandbox</code> directory.</p></li>
      <li><p>You need an http server running on your system and Mac and Linux machines typically
have Apache pre-installed. If you don't have an http server installed, you can <a
href="https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager">install
node.js</a> and use it to run <code>scripts/web-server.js</code>, a simple bundled http
server.</p></li>
    </ol>
  </doc:tutorial-instruction>

  <doc:tutorial-instruction id="ss-win" title="Snapshots on Windows">
    <ol>
      <li><p>Verify that you have <a href="http://java.com/">Java</a> installed and that the
<code>java</code> executable is on your <code>PATH</code> by running the following command in the
Windows command line:</p>
      <pre><code>java -version</code></pre>
      <p>You need Java to run unit tests, so download the <a
href="http://code.angularjs.org/angular-phonecat/">zip archive</a> that contains all of the files
and unzip the files into the [tutorial-dir] directory</p></li>
      <li><p>Change your current directory to [tutorial-dir]/sandbox, as follows:</p>
      <pre><code>cd [tutorial-dir]/sandbox</code></pre>
      <p>The tutorial instructions assume you are running all commands from this directory.</p></li>
      <li><p>You need an http server running on your system, but if you don't already have one
already installed, you can install <a href="http://nodejs.org/">node.js</a>. Download the <a
href="http://node-js.prcn.co.cc/">pre-compiled binaries</a>, unzip them, and then add
<code>nodejs\bin</code> into your <code>PATH</code>. Use <code>node</code> to run
<code>scripts\web-server.js</code>, a simple bundled http server.</p></li>
    </ol>
  </doc:tutorial-instruction>
</doc:tutorial-instructions>

The last thing to do is to make sure your computer has a web browser and a good text editor
installed. Now, let's get going with {@link step_00 step 0}.
