diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..b8a6e5723
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,19 @@
+# http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+
+[*.md]
+max_line_length = 0
+trim_trailing_whitespace = false
+
+# Indentation override
+#[lib/**.js]
+#[{package.json,.travis.yml}]
+#[**/**.js]
diff --git a/.gitignore b/.gitignore
index 5fd454991..9b3a09fc9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,14 @@
-typings/
-node_modules/
-*.js
-*.js.map
\ No newline at end of file
+.idea
+node_modules
+jspm_packages
+npm-debug.log
+debug.log
+src/**/*.js
+!src/systemjs.config.extras.js
+!src/systemjs.config.js
+!src/systemjs-angular-loader.js
+*.js.map
+e2e/**/*.js
+e2e/**/*.js.map
+_test-output
+_temp
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..808bc2c4e
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,20 @@
+dist: trusty
+sudo: required
+language: node_js
+node_js:
+ - "5"
+os:
+ - linux
+env:
+ global:
+ - DBUS_SESSION_BUS_ADDRESS=/dev/null
+ - DISPLAY=:99.0
+ - CHROME_BIN=chromium-browser
+before_script:
+ - sh -e /etc/init.d/xvfb start
+install:
+ - npm install
+script:
+ - npm run lint
+ - npm run test:once
+ - npm run e2e
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8959763b6..4c991b119 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,197 @@
+## Angular Documentation QuickStart Changelog
+Upgraders: for a fresh start, consider running these commands
+* `git clean -xdf`
+* `npm install`
+
+
+# 0.4.1 (2017-03-24)
+* Replace systemjs-angular-loader with version that works for IE
+
+
+# 0.4.0 (2017-03-24)
+* Update to Angular 4.0.0
+
+
+# 0.3.0 (2017-03-22)
+* Remove moduleId with a systemjs loader.
+
+
+# 0.2.22 (2017-01-05)
+* Add `non-essential-files.txt` and instructions to use it to README
+
+
+# 0.2.21 (2016-12-14)
+* Update to in-memory-web-api v.0.2.1
+
+
+# 0.2.20 (2016-12-07)
+* Update to Angular 2.3.0
+
+
+# 0.2.19 (2016-11-30)
+* remove upgrade mappings from `systemjs.config.js` PR #301
+
+
+# 0.2.18 (2016-11-30)
+* remove `exclude` clause from `tsconfig.json`; it was just confusing people
+* karma.config + karma-test-shim can handle multiple spec source paths (issue #294)
+* cosmetic `app.component.spec.ts` changes
+* cosmetic `karma.config.js` changes
+
+
+# 0.2.17 (2016-11-16)
+* Conform to updated QuickStart advice
+ * removed docker everywhere (was nice but not necessary)
+ * removed wallaby
+ * shrink styles.css
+ * refine tsconfig.json
+ * `AppComponent` uses interpolation
+
+
+# 0.2.16 (2016-11-14)
+* Update to Angular 2.2.0
+
+
+# 0.2.15 (2016-10-29)
+* Revert to Jasmine 2.4.1 because bug in 2.5.x (see [jasmine issue #1231](https://github.com/jasmine/jasmine/issues/1231))
+
+
+# 0.2.14 (2016-10-29)
+* Remove bootstrap.css install
+* Angular v2.1.2
+
+
+# 0.2.13 (2016-10-20)
+* Protractor 4
+* Move from `typings` to `@types`. See `tsconfig.json` changes.
+* Angular v2.1.1
+
+
+# 0.2.12 (2016-10-06)
+* Angular v2.1.0
+
+
+# 0.2.11 (2016-10-06)
+* Angular v2.0.2
+* License is MIT
+* Current testing configuration
+* No code changes
+
+
+# 0.2.10 (2016-09-19)
+* All "Angular 2" references become just "Angular"
+* No code changes
+
+
+# 0.2.9 (2016-09-14)
+* Angular 2.0.0 version
+* Update to Typescript 2.0.2
+* Fix e2e test missing dir
+
+
+# 0.2.8 (2016-09-01)
+* remove @angular test libraries from system.js (now in shim)
+* update test related files
+* wallaby doesn't completely work. Researching.
+
+
+# 0.2.7 (2016-08-31)
+* Angular 2 RC6 version
+* Updated new forms, router, angular2-in-memory-web-api, karma, core-js, rxjs and zone.js packages
+* Removed router-deprecated package
+* Updated karma.conf.js and systemjs.config.js
+
+
+# 0.2.6 (2016-08-09)
+* Angular 2 RC5 version
+* Updated new forms, router and angular2-in-memory-web-api
+
+
+# 0.2.5 (2016-06-30)
+* Angular 2 RC4 version
+* Updated new forms and router
+
+
+# 0.2.4 (2016-06-21)
+* Angular 2 RC3 version
+* Add new forms and router
+* Add support for TS e2e tests
+
+
+# 0.2.3 (2016-06-15)
+* Angular 2 RC2 version
+
+
+# 0.2.2 (2016-05-21)
+* Update to Typings 1.x
+
+
+# 0.2.1 (2016-05-03)
+* Angular 2 RC01 version
+
+
+# 0.2.0 (2016-05-02)
+* Angular 2 RC0 version
+
+
+# 0.1.17 (2016-04-29)
+* update packages
+ * Angular 2 beta 17
+ * RxJS 5.0.0-beta.6
+ * a2-in-memory-web-api 0.1.17
+
+
+# 0.1.16 (2016-04-26)
+* update packages
+ * Angular 2 beta 16
+ * a2-in-memory-web-api 0.1.6
+ * protractor 3.3.0
+ * typings 0.8.1
+ * zone.js 0.6.12
+
+ * added favicon.ico
+
+ * testing
+ - updated wallaby.js and karma.conf.js
+ - updated app.component.spec.ts
+
+
+
+# 0.1.15 (2016-04-13)
+* Add testing support
+ * npm scripts
+ * karma/jasmine
+ * protractor
+
+* update packages
+ * Angular 2 beta 15
+ * lite-server 2.2.0
+ * systemjs 0.19.26
+ * typescript 1.8.10
+ * typings 0.7.12
+
+* add run packages
+ * a2-in-memory-web-api
+
+* add testing dev-dependency packages
+ * canonical-path: 0.0.2,
+ * http-server: ^0.9.0,
+ * jasmine-core: ~2.4.1,
+ * karma: ^0.13.22,
+ * karma-chrome-launcher: ^0.2.3,
+ * karma-cli: ^0.1.2,
+ * karma-htmlfile-reporter: ^0.2.2,
+ * karma-jasmine: ^0.3.8,
+ * protractor: ^3.2.2,
+ * rimraf: ^2.5.2
+
+
+# 0.1.14 (2016-04-07)
+* update packages
+ * Angular 2 beta 14
+ * lite-server 2.2.0
+ * typings 0.7.12
+
# 0.1.13 (2016-03-31)
* update packages
@@ -16,4 +210,4 @@
* Angular 2 beta 11
* zones 0.6.4
* typescript 1.8.9
- * typings 0.7.9
\ No newline at end of file
+ * typings 0.7.9
diff --git a/README.md b/README.md
index 1ac4cc334..aeccb7d76 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,88 @@
-# Angular 2 QuickStart Source
+# Angular QuickStart Source
+[![Build Status][travis-badge]][travis-badge-url]
+
+**This repository is now deprecated. The Angular Quickstart project was a nice starting point for creating Angular applications. Now we recommend using the [Angular CLI](https://github.com/angular/angular-cli) to create new Angular projects.**
+
+**Starting from 1 November 2017, all the Angular documentation, at [angular.io](https://angular.io), is based on the Angular CLI.**
+
+**Let's [get started](https://angular.io/guide/quickstart)**
+
+---
This repository holds the TypeScript source code of the [angular.io quickstart](https://angular.io/docs/ts/latest/quickstart.html),
the foundation for most of the documentation samples and potentially a good starting point for your application.
+It's been extended with testing support so you can start writing tests immediately.
+
+**This is not the perfect arrangement for your application. It is not designed for production.
+It exists primarily to get you started quickly with learning and prototyping in Angular**
+
+We are unlikely to accept suggestions about how to grow this QuickStart into something it is not.
+Please keep that in mind before posting issues and PRs.
+
+## Updating to a newer version of the Quickstart Repo
+
+From time to time the QuickStart will be enhanced with support for new features or to reflect
+changes to the [official Style Guide](https://angular.io/docs/ts/latest/guide/style-guide.html).
+
+You can update your existing project to an up-to-date QuickStart by following these instructions:
+- Create a new project using the [instructions below](#create-a-new-project-based-on-the-quickstart)
+- Copy the code you have in your project's `main.ts` file onto `src/app/main.ts` in the new project
+- Copy your old `app` folder into `src/app`
+- Delete `src/app/main.ts` if you have one (we now use `src/main.ts` instead)
+- Copy your old `index.html`, `styles.css` and `tsconfig.json` into `src/`
+- Install all your third party dependencies
+- Copy your old `e2e/` folder into `e2e/`
+- Copy over any other files you added to your project
+- Copy your old `.git` folder into your new project's root
+
+Now you can continue working on the new project.
+
+## Prerequisites
+
+Node.js and npm are essential to Angular development.
+
+
+Get it now if it's not already installed on your machine.
+
+**Verify that you are running at least node `v4.x.x` and npm `3.x.x`**
+by running `node -v` and `npm -v` in a terminal/console window.
+Older versions produce errors.
+
+We recommend [nvm](https://github.com/creationix/nvm) for managing multiple versions of node and npm.
+
## Create a new project based on the QuickStart
Clone this repo into new project folder (e.g., `my-proj`).
-```bash
-$ git clone https://github.com/angular/quickstart my-proj
-$ cd my-proj
+```shell
+git clone https://github.com/angular/quickstart my-proj
+cd my-proj
```
We have no intention of updating the source on `angular/quickstart`.
-Discard everything "git-like" by deleting the `.git` folder.
-```bash
-$ rm -rf .git
+Discard the `.git` folder..
+```shell
+rm -rf .git # OS/X (bash)
+rd .git /S/Q # windows
+```
+### Delete _non-essential_ files (optional)
+
+You can quickly delete the _non-essential_ files that concern testing and QuickStart repository maintenance
+(***including all git-related artifacts*** such as the `.git` folder and `.gitignore`!)
+by entering the following commands while in the project folder:
+
+##### OS/X (bash)
+```shell
+xargs rm -rf < non-essential-files.osx.txt
+rm src/app/*.spec*.ts
+rm non-essential-files.osx.txt
+```
+
+##### Windows
+```shell
+for /f %i in (non-essential-files.txt) do del %i /F /S /Q
+rd .git /s /q
+rd e2e /s /q
```
### Create a new git repo
@@ -22,37 +90,106 @@ You could [start writing code](#start-development) now and throw it all away whe
If you'd rather preserve your work under source control, consider taking the following steps.
Initialize this project as a *local git repo* and make the first commit:
-```bash
-$ git init
-$ git add .
-$ git commit -m "Initial commit"
+```shell
+git init
+git add .
+git commit -m "Initial commit"
```
+>Recover the deleted `.gitignore` from the QuickStart repository
+if you lost it in the _Delete non-essential files_ step.
+
Create a *remote repository* for this project on the service of your choice.
Grab its address (e.g. *`https://github.com//my-proj.git`*) and push the *local repo* to the *remote*.
-```bash
-$ git remote add origin
-$ git push -u origin master
+```shell
+git remote add origin
+git push -u origin master
```
-### Start development
+## Install npm packages
+
+> See npm and nvm version notes above
Install the npm packages described in the `package.json` and verify that it works:
-```bash
-$ npm install
-$ npm start
+```shell
+npm install
+npm start
```
+
+>Doesn't work in _Bash for Windows_ which does not support servers as of January, 2017.
+
+The `npm start` command first compiles the application,
+then simultaneously re-compiles and runs the `lite-server`.
+Both the compiler and the server watch for file changes.
+
+Shut it down manually with `Ctrl-C`.
+
You're ready to write your application.
-Remember the npm scripts in `package.json`:
+### npm scripts
+
+We've captured many of the most useful commands in npm scripts defined in the `package.json`:
* `npm start` - runs the compiler and a server at the same time, both in "watch mode".
-* `npm run tsc` - runs the TypeScript compiler once.
-* `npm run tsc:w` - runs the TypeScript compiler in watch mode; the process keeps running, awaiting changes to TypeScript files and re-compiling when it sees them.
-* `npm run lite` - runs the [lite-server](https://www.npmjs.com/package/lite-server), a light-weight, static file server, written and maintained by
+* `npm run build` - runs the TypeScript compiler once.
+* `npm run build:w` - runs the TypeScript compiler in watch mode; the process keeps running, awaiting changes to TypeScript files and re-compiling when it sees them.
+* `npm run serve` - runs the [lite-server](https://www.npmjs.com/package/lite-server), a light-weight, static file server, written and maintained by
[John Papa](https://github.com/johnpapa) and
[Christopher Martin](https://github.com/cgmartin)
with excellent support for Angular apps that use routing.
-* `npm run typings` - runs the typings tool.
-* `npm run postinstall` - called by *npm* automatically *after* it successfully completes package installation. This script installs the TypeScript definition files this app requires.
+
+Here are the test related scripts:
+* `npm test` - compiles, runs and watches the karma unit tests
+* `npm run e2e` - compiles and run protractor e2e tests, written in Typescript (*e2e-spec.ts)
+
+## Testing
+
+The QuickStart documentation doesn't discuss testing.
+This repo adds both karma/jasmine unit test and protractor end-to-end testing support.
+
+These tools are configured for specific conventions described below.
+
+*It is unwise and rarely possible to run the application, the unit tests, and the e2e tests at the same time.
+We recommend that you shut down one before starting another.*
+
+### Unit Tests
+TypeScript unit-tests are usually in the `src/app` folder. Their filenames must end in `.spec.ts`.
+
+Look for the example `src/app/app.component.spec.ts`.
+Add more `.spec.ts` files as you wish; we configured karma to find them.
+
+Run it with `npm test`
+
+That command first compiles the application, then simultaneously re-compiles and runs the karma test-runner.
+Both the compiler and the karma watch for (different) file changes.
+
+Shut it down manually with `Ctrl-C`.
+
+Test-runner output appears in the terminal window.
+We can update our app and our tests in real-time, keeping a weather eye on the console for broken tests.
+Karma is occasionally confused and it is often necessary to shut down its browser or even shut the command down (`Ctrl-C`) and
+restart it. No worries; it's pretty quick.
+
+### End-to-end (E2E) Tests
+
+E2E tests are in the `e2e` directory, side by side with the `src` folder.
+Their filenames must end in `.e2e-spec.ts`.
+
+Look for the example `e2e/app.e2e-spec.ts`.
+Add more `.e2e-spec.js` files as you wish (although one usually suffices for small projects);
+we configured Protractor to find them.
+
+Thereafter, run them with `npm run e2e`.
+
+That command first compiles, then simultaneously starts the `lite-server` at `localhost:8080`
+and launches Protractor.
+
+The pass/fail test results appear at the bottom of the terminal window.
+A custom reporter (see `protractor.config.js`) generates a `./_test-output/protractor-results.txt` file
+which is easier to read; this file is excluded from source control.
+
+Shut it down manually with `Ctrl-C`.
+
+[travis-badge]: https://travis-ci.org/angular/quickstart.svg?branch=master
+[travis-badge-url]: https://travis-ci.org/angular/quickstart
diff --git a/app/app.component.ts b/app/app.component.ts
deleted file mode 100644
index c9e1ba9c3..000000000
--- a/app/app.component.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import {Component} from 'angular2/core';
-
-@Component({
- selector: 'my-app',
- template: '