diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5702678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,65 @@
+
+# Created by https://www.gitignore.io/api/node
+
+### Node ###
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Typescript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+
+# End of https://www.gitignore.io/api/node
diff --git a/lab-noah/app/entry.js b/lab-noah/app/entry.js
new file mode 100644
index 0000000..d1de55b
--- /dev/null
+++ b/lab-noah/app/entry.js
@@ -0,0 +1,30 @@
+'use strict';
+
+require('./scss/reset.scss');
+require('./scss/main.scss');
+
+const angular = require('angular');
+const cowsay = require('cowsay-browser');
+
+const cowsayApp = angular.module('cowsayApp', []);
+
+cowsayApp.controller('CowsayController', ['$log', '$scope', CowsayController]);
+
+function CowsayController($log, $scope) {
+ $log.debug('CowsayController');
+
+ let cowsayCtrl = $scope.cowsayCtrl = {};
+ // whats goin on on this line?
+ // is cowsayCtrl bneing attached onto the $scope object?
+
+ cowsayCtrl.title = 'Welcome to Cowville!';
+ cowsayCtrl.speak = function(input) {
+ $log.debug('cowsayCtrl.speak');
+
+ return cowsay.say({ text: input || 'moo' });
+ };
+ cowsayCtrl.input = function(input) {
+ $log.debug('cowsayCtrl.input');
+ $log.log(input);
+ };
+}
diff --git a/lab-noah/app/index.html b/lab-noah/app/index.html
new file mode 100644
index 0000000..39dc896
--- /dev/null
+++ b/lab-noah/app/index.html
@@ -0,0 +1,21 @@
+
+
+
+ Cowville!
+
+
+
+
+
+ History
+ {{history}}
+
+
+
+
+
diff --git a/lab-noah/app/scss/main.scss b/lab-noah/app/scss/main.scss
new file mode 100644
index 0000000..737cf79
--- /dev/null
+++ b/lab-noah/app/scss/main.scss
@@ -0,0 +1,6 @@
+
+body{
+ section{
+
+ }
+}
diff --git a/lab-noah/app/scss/reset.scss b/lab-noah/app/scss/reset.scss
new file mode 100644
index 0000000..0e5f2e0
--- /dev/null
+++ b/lab-noah/app/scss/reset.scss
@@ -0,0 +1,43 @@
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
diff --git a/lab-noah/package.json b/lab-noah/package.json
new file mode 100644
index 0000000..f34e1a1
--- /dev/null
+++ b/lab-noah/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "lab-noah",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "build": "./node_modules/webpack/bin/webpack.js",
+ "watch": "./node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "angular": "^1.6.3",
+ "cowsay-browser": "^1.1.8",
+ "css-loader": "^0.27.3",
+ "html-webpack-plugin": "^2.28.0",
+ "node-sass": "^4.5.0",
+ "sass-loader": "^6.0.3",
+ "style-loader": "^0.14.1",
+ "webpack": "^1.14.0"
+ },
+ "devDependencies": {
+ "webpack-dev-server": "^1.16.2"
+ }
+}
diff --git a/lab-noah/webpack.config.js b/lab-noah/webpack.config.js
new file mode 100644
index 0000000..279dac8
--- /dev/null
+++ b/lab-noah/webpack.config.js
@@ -0,0 +1,24 @@
+'use strict';
+
+const HTMLPlugin = require('html-webpack-plugin');
+
+module.exports = {
+ entry: `${__dirname}/app/entry.js`,
+ output: {
+ filename: 'bundle.js',
+ path: 'build'
+ },
+ plugins: [
+ new HTMLPlugin({
+ template: `${__dirname}/app/index.html`
+ })
+ ],
+ module: {
+ loaders: [
+ {
+ test: /\.scss$/,
+ loader: 'style!css!sass!'
+ }
+ ]
+ }
+};