+
+
+**Install Yeoman, generator-angular-fullstack, & the Gulp CLI**
+
+```bash
+$ npm install --global yo generator-angular-fullstack gulp-cli
+```
+
+
+
+**Make a new folder for your project, scope into it, and run the generator.**
+
+```bash
+$ mkdir example && cd $_
+$ yo angular-fullstack
+...
+```
+
+Answer the generator's questions to scaffold an app tailored to your preferences.
+
+
+
+
+## Get up and running
+
+
+
+
+**Start the development server**
+
+```bash
+$ gulp serve
+```
+
+Your web browser should open up to a page similar to the one shown to the right.
+
+
+
+
+
+
+
diff --git a/docs/docs.css b/docs/docs.css
new file mode 100644
index 000000000..247035323
--- /dev/null
+++ b/docs/docs.css
@@ -0,0 +1,8 @@
+.s-content img {
+ max-width: 800px;
+ width: 100%;
+ margin-bottom: 20px;
+ box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),
+ 0px 10px 14px 1px rgba(0, 0, 0, 0.14),
+ 0px 4px 18px 3px rgba(0, 0, 0, 0.12);
+}
diff --git a/docs/images/afs-screenshot.png b/docs/images/afs-screenshot.png
new file mode 100644
index 000000000..dda0f606d
Binary files /dev/null and b/docs/images/afs-screenshot.png differ
diff --git a/docs/images/foo-route-navbar.jpg b/docs/images/foo-route-navbar.jpg
new file mode 100644
index 000000000..0cca187bd
Binary files /dev/null and b/docs/images/foo-route-navbar.jpg differ
diff --git a/docs/images/foo-route.jpg b/docs/images/foo-route.jpg
new file mode 100644
index 000000000..53de246a7
Binary files /dev/null and b/docs/images/foo-route.jpg differ
diff --git a/docs/images/logged-in.jpg b/docs/images/logged-in.jpg
new file mode 100644
index 000000000..1906b25f4
Binary files /dev/null and b/docs/images/logged-in.jpg differ
diff --git a/docs/images/socket.io-demo.gif b/docs/images/socket.io-demo.gif
new file mode 100644
index 000000000..fdd3e0094
Binary files /dev/null and b/docs/images/socket.io-demo.gif differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 000000000..53ede32c5
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,110 @@
+# Documentation Home
+
+## Generators
+
+Available generators:
+
+* App
+ - [angular-fullstack](Generators/app.md) (aka [angular-fullstack:app](Generators/app.md))
+* Server Side
+ - [angular-fullstack:endpoint](Generators/endpoint.md)
+* Client Side (via [generator-ng-component](https://github.com/DaftMonk/generator-ng-component))
+ - [angular-fullstack:route](Generators/route.md)
+ - [angular-fullstack:component](Generators/component.md)
+ - [angular-fullstack:controller](Generators/controller.md)
+ - [angular-fullstack:filter](Generators/filter.md)
+ - [angular-fullstack:directive](Generators/directive.md)
+ - [angular-fullstack:service](Generators/service.md)
+ - [angular-fullstack:provider](Generators/service.md)
+ - [angular-fullstack:factory](Generators/service.md)
+ - [angular-fullstack:decorator](Generators/decorator.md)
+* Deployment
+ - [angular-fullstack:openshift](Generators/openshift.md)
+ - [angular-fullstack:heroku](Generators/heroku.md)
+
+
+## Injection
+
+A gulp task looks for new SCSS/LESS/Stylus files in your `client/app` and `client/components` folder and automatically injects them into the main style file (ex `client/app/app.scss`) based on an injection block.
+
+
+## Configuration
+Yeoman generated projects can be further tweaked according to your needs by modifying project files appropriately.
+
+A `.yo-rc` file is generated for helping you copy configuration across projects, and to allow you to keep track of your settings. You can change this as you see fit.
+
+## Testing
+
+Running `gulp test` will run the client and server unit tests with karma and mocha.
+
+Use `gulp test:server` to only run server tests.
+
+Use `gulp test:client` to only run client tests.
+
+**Protractor tests**
+
+To setup protractor e2e tests, you must first run
+
+`npm run update-webdriver`
+
+Use `gulp test:e2e` to have protractor go through tests located in the `e2e` folder.
+
+**Code Coverage**
+
+Use `gulp test:coverage` to run mocha-istanbul and generate code coverage reports.
+
+`coverage/server` will be populated with `e2e` and `unit` folders containing the `lcov` reports.
+
+The coverage taget has 3 available options:
+- `test:coverage:unit` generate server unit test coverage
+- `test:coverage:e2e` generate server e2e test coverage
+- `test:coverage:check` combine the coverage reports and check against predefined thresholds
+
+* *when no option is given `test:coverage` runs all options in the above order*
+
+**Debugging**
+
+Use `gulp serve:debug` for a more debugging-friendly environment.
+
+## Environment Variables
+
+Keeping your app secrets and other sensitive information in source control isn't a good idea.
+To have gulp launch your app with specific environment variables, add them to the git ignored environment config file: `server/config/local.env.js`.
+
+## Project Structure
+
+Overview
+
+ ├── client
+ │ ├── app - All of our app specific components go in here
+ │ ├── assets - Custom assets: fonts, images, etc…
+ │ ├── components - Our reusable components, non-specific to our app
+ │
+ ├── e2e - Our protractor end to end tests
+ │
+ └── server
+ ├── api - Our apps server api
+ ├── auth - For handling authentication with different auth strategies
+ ├── components - Our reusable or app-wide components
+ ├── config - Where we do the bulk of our apps configuration
+ │ └── local.env.js - Keep our environment variables out of source control
+ │ └── environment - Configuration specific to the node environment
+ └── views - Server rendered views
+
+An example client component in `client/app`
+
+ main
+ ├── main.js - Routes
+ ├── main.controller.js - Controller for our main route
+ ├── main.controller.spec.js - Test
+ ├── main.html - View
+ └── main.less - Styles
+
+An example server component in `server/api`
+
+ thing
+ ├── index.js - Routes
+ ├── thing.controller.js - Controller for our `thing` endpoint
+ ├── thing.model.js - Database model
+ ├── thing.socket.js - Register socket events
+ └── thing.spec.js - Test
diff --git a/docs/package.json b/docs/package.json
new file mode 100644
index 000000000..85d741344
--- /dev/null
+++ b/docs/package.json
@@ -0,0 +1,107 @@
+{
+ "name": "webpack.js.org",
+ "version": "0.0.0",
+ "private": true,
+ "description": "The main site for all things Webpack.",
+ "homepage": "https://github.com/webpack/webpack.js.org",
+ "author": "Greg Venech",
+ "license": "CC BY",
+ "main": "n/a",
+ "keywords": [
+ "webpack",
+ "documentation",
+ "build",
+ "tool"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/angular-fullstack/generator-angular-fullstack.git"
+ },
+ "bugs": {
+ "url": "https://github.com/angular-fullstack/generator-angular-fullstack/issues"
+ },
+ "engines": {
+ "node": ">=6.9"
+ },
+ "scripts": {
+ "start": "npm run init:generated && node ./bootstrap.js",
+ "build": "npm run init:generated && rm -rf build/ && node ./bootstrap.js && npm run sitemap",
+ "build-test": "npm run build && http-server build/",
+ "deploy": "gh-pages -d build --repo git@github.com:angular-fullstack/angular-fullstack.github.io.git --branch master",
+ "fetch": "scripts/fetch.sh",
+ "init:generated": "mkdirp ./generated/loaders && mkdirp ./generated/plugins ",
+ "lint": "run-s lint:*",
+ "lint:links": "hyperlink build/index.html -r | tap-min",
+ "lint:js": "eslint . --ext .js --ext .jsx",
+ "lint:md": "eslint . --ext .md",
+ "lint:markdown": "markdownlint --config ./.markdownlintrc **/*.md *.md ./content/**/*.md",
+ "lint:social": "alex ./**/*.md",
+ "lint:prose": "cp .proselintrc ~/ && proselint content",
+ "test": "npm run lint ",
+ "sitemap": "cd build && sitemap-static --prefix=https://webpack.js.org/ > sitemap.xml"
+ },
+ "devDependencies": {
+ "alex": "^3.1.0",
+ "antwar": "0.8.1-alpha.078b5fbf",
+ "antwar-helpers": "0.8.1-alpha.078b5fbf",
+ "antwar-interactive": "0.8.1-alpha.078b5fbf",
+ "antwar-prevnext-plugin": "0.8.1-alpha.078b5fbf",
+ "async": "^2.1.2",
+ "autoprefixer": "^6.3.7",
+ "babel-core": "^6.10.4",
+ "babel-eslint": "^6.1.2",
+ "babel-loader": "^6.2.5",
+ "babel-plugin-transform-object-rest-spread": "^6.16.0",
+ "babel-preset-env": "^0.0.8",
+ "babel-preset-react": "^6.11.1",
+ "copy-webpack-plugin": "^4.0.1",
+ "css-loader": "^0.25.0",
+ "eslint": "3.6.0",
+ "eslint-loader": "^1.5.0",
+ "eslint-plugin-markdown": "^1.0.0-beta.2",
+ "extract-text-webpack-plugin": "^1.0.1",
+ "file-loader": "^0.9.0",
+ "fontgen-loader": "^0.2.1",
+ "gh-pages": "^0.12.0",
+ "github": "^5.2.3",
+ "html-webpack-plugin": "^2.22.0",
+ "http-server": "^0.9.0",
+ "hyperlink": "^2.5.0",
+ "json-loader": "^0.5.4",
+ "lodash": "^4.16.1",
+ "markdown-loader": "^0.1.7",
+ "markdownlint": "^0.2.0",
+ "markdownlint-cli": "^0.2.0",
+ "marked": "^0.3.6",
+ "mkdirp": "^0.5.1",
+ "modularscale-sass": "^2.1.1",
+ "moment": "^2.15.1",
+ "ncp": "^2.0.0",
+ "node-sass": "^3.9.3",
+ "npm-run-all": "^3.1.0",
+ "postcss-loader": "^0.13.0",
+ "prism-languages": "^0.3.1",
+ "prismjs": "^1.5.1",
+ "raw-loader": "^0.5.1",
+ "request": "^2.75.0",
+ "sass-loader": "^4.0.2",
+ "sitemap-static": "^0.3.1",
+ "style-loader": "^0.13.1",
+ "tap-min": "^1.1.0",
+ "url-loader": "^0.5.7",
+ "webpack": "^1.13.2",
+ "webpack-dev-server": "^1.16.1",
+ "webpack-merge": "^0.14.1",
+ "yaml-frontmatter-loader": "0.0.3"
+ },
+ "dependencies": {
+ "d3": "^4.2.7",
+ "filesize": "^3.3.0",
+ "preact": "^6.2.1",
+ "preact-compat": "^3.6.0",
+ "react": "^15.3.2",
+ "react-dom": "^15.3.2",
+ "react-router": "^2.8.1",
+ "whatwg-fetch": "^2.0.1"
+ }
+}
diff --git a/docs/scripts/deploy.sh b/docs/scripts/deploy.sh
new file mode 100644
index 000000000..c78e30449
--- /dev/null
+++ b/docs/scripts/deploy.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# see https://gist.github.com/domenic/ec8b0fc8ab45f39403dd
+set -e # Exit with nonzero exit code if anything fails
+
+SOURCE_BRANCH="master"
+
+# Pull requests and commits to other branches shouldn't try to deploy, just build to verify
+if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then
+ echo "Skipping deploy; just doing a build and linting links/prose/js."
+ npm run build
+ # npm run fetch - Relies on third party files, disabled for now
+ npm run lint:js
+ npm run lint:prose
+ npm run lint:links
+ exit 0
+fi
+
+# Save some useful information
+REPO=`cd .. && git config remote.origin.url`
+SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
+
+# Fetch loaders/plugins etc.
+npm run fetch
+
+# Run our build
+npm run build
+
+# Set some git options
+git config --global user.name "Travis CI"
+git config --global user.email "ci@travis-ci.org"
+git remote set-url origin "${SSH_REPO}"
+
+# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc
+ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key"
+ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv"
+ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
+ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
+openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in scripts/deploy_key.enc -out scripts/deploy_key -d
+chmod 600 scripts/deploy_key
+eval `ssh-agent -s`
+ssh-add scripts/deploy_key
+
+# Now that we're all set up, we can deploy
+npm run deploy
diff --git a/docs/scripts/deploy_key.enc b/docs/scripts/deploy_key.enc
new file mode 100644
index 000000000..3d5bf354c
Binary files /dev/null and b/docs/scripts/deploy_key.enc differ
diff --git a/docs/scripts/deploy_key.pub b/docs/scripts/deploy_key.pub
new file mode 100644
index 000000000..f1d931d3d
--- /dev/null
+++ b/docs/scripts/deploy_key.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGpHVwGQCrfjaNmbFEfRRNZe7FUDvGH2yCJqaZTx6TmmizsimQfsmt7KyHDiuJs83/smJoFs+/4W73SRPL2JspcvRHlIVv2O2ixfo71jq0HPXnVVpmCBKN3brSMDFxTX3EqN0xX39N9cUanH86B1GY8vWwTKq2YHxuzRLoS6pD0bDmsXLV9Vl5wgMFskhXyrKNssCGoaAFRCoikKL79n6t1UxqVIJTSMQE+hTOCfdPVR/xvMfo8z7p5DUGeG/OCHkKOGyfXsDoyG5kg2/vLvEhCgLNIpS1OjuuQpnA4eRcppni4lHYAGuqH8IDRv+bLLS9tguacVuRIIiDEW4A81RKtipP103gUsrnEUSgRffAYmPUQBD2j6mD9NM8micaBbiUQ7FQD7iwZXf3Flwpt3w9lV+/QGOkUGNG1MZQDUZ6CCnVzHo/zo8pEiBNqMkHHNJn97T9ObZT/dgs6PgfbE0Ex4QSz1gxKEuVXcAM9Jb+5fteIs56NFPXgvd50CtHJJACpYtWZkgweluGQl1BSzO2bXfW2SOY4e75sGSJo5P+qH14cwpwAMila9W65lKXZ26Bfjlj+9lLpopP+FSW1VaoKv0TbNhk7eoaGbhCR8EYhhGV+1f2yt+ajPz22bbV44r6ojRGcKdAzgIVxeVTNZDb0usQ6ie+UWrW30e51EOKGw== travis
diff --git a/docs/scripts/fetch.sh b/docs/scripts/fetch.sh
new file mode 100644
index 000000000..0665de671
--- /dev/null
+++ b/docs/scripts/fetch.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e # Exit with nonzero exit code if anything fails
+
+rm -rf ./generated
+mkdir -p ./generated/loaders
+cp -rf ./content/loaders/ ./generated/loaders
+mkdir -p ./generated/plugins
+cp -rf ./content/plugins/ ./generated/plugins
+
+# Fetches github.com/webpack/*-loader repositories
+./scripts/fetch_package_names.js "-loader" | ./scripts/fetch_package_files.js "README.md" "./generated/loaders"
+
+# Fetches github.com/webpack/*-webpack-plugin repositories
+./scripts/fetch_package_names.js "-webpack-plugin" | ./scripts/fetch_package_files.js "README.md" "./generated/plugins"
diff --git a/docs/scripts/fetch_package_files.js b/docs/scripts/fetch_package_files.js
new file mode 100644
index 000000000..96876a0ba
--- /dev/null
+++ b/docs/scripts/fetch_package_files.js
@@ -0,0 +1,115 @@
+#!/usr/bin/env node
+// ./fetch_package_files