diff --git a/public/docs/js/latest/guide/user-input.jade b/public/docs/js/latest/guide/user-input.jade
index e69de29bb2..45bb5e9e77 100644
--- a/public/docs/js/latest/guide/user-input.jade
+++ b/public/docs/js/latest/guide/user-input.jade
@@ -0,0 +1,74 @@
+.l-main-section
+    p.
+      Mission: By the end of this chapter, you should be able to add to a list on a page when a
+      button is clicked and update the text displayed when the user types into a textbox.
+    .l-sub-section
+      h3#section-examples Examples:
+        ul
+          li
+            a(href='') TypeScript
+          li
+            a(href='') ES5
+    p.
+      You can make your application respond to user input by associating events with functions in your controller
+      using the event syntax using () to surround the name of an event.
+    p.
+      For a particular control like an input you can have it call methods on your controller on keyup event like so:
+
+    pre.prettyprint.lang-html
+      code.
+        <input (keyup)="myControllerMethod()">
+    p.
+      As in previous examples, you can make element references available to other parts of the template as a local
+      variable using the # syntax.  With this and events, we can do the old "update text as you type" example:
+
+    pre.prettyprint.lang-html
+      code.
+        <input #myname (keyup)>
+        <p>{{myname.value}}</p>
+
+    p.text-body(ng-non-bindable).
+      The #my-name creates a local variable in the template that we'll refer to below in the
+      <p> element.  The (keyup) tells Angular to trigger updates when it gets a keyup
+      event.  And the {{my-name.value}} binds the text node of the  <p> element to the
+      input's value property.
+    p Let's do something a little more complex where users enter items and add them to a list like this:
+    div(align='center')
+        img(src='user-input-example1.png')
+
+
+.l-main-section
+    h2#section-create-an-array-property Create an array property
+    p.
+      With the default bootstrapping in place, create a TodoController class that will manage interactions with the
+      list. Inside TodoController, add an array with an initial list of items.  Then add a method that pushes new items
+      on the array when called.
+
+    aside.is-right.
+        As with the previous example, in a production application you will separate your model out into another class
+        and inject it into TodoController.  We've omitted it here for brevity.
+
+    pre.prettyprint.linenums.lang-javascript
+      code.
+        //ES5
+        function TodoList() {
+          this.todos = ["Eat Breakfast", "Walk Dog", "Breathe"];
+                  this.addTodo = function(todo) {
+            this.todos.push(todo);
+          };
+        }
+
+    pre.prettyprint.linenums.lang-typescript
+      code.
+        //TypeScript
+        class TodoList {
+          todos: Array;
+                  constructor() {
+            this.todos = ["Eat Breakfast", "Walk Dog", "Breathe"];
+          }
+                  addTodo(todo: string) {
+            this.todos.push(todo);
+          }
+        }
+
+