(function(){
  
  var app = angular.module("githubViewer", ["ngRoute"]);
  
  app.config(function($routeProvider){
      $routeProvider
        .when("/main", {
            templateUrl: "main.html",
            controller: "MainController" //This is an optional routing rule
        })
        .otherwise({redirectTo:"/main"})
  });
  
})();
<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>
    document.write('<base href="' + document.location + '" />');
  </script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.8/angular.js" data-semver="1.4.8"></script>
    <script data-require="angular-route@*" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular-route.js"></script>
    <script src="app.js"></script>
    <script src="MainController.js"></script>
    <script src="userController.js"></script>
  </head>


  <body>
    <h1>Github Viewer</h1>
    <div ng-view></div>
  </body>
  
  
</html>
/* Put your css in here */

 <div id="userDetails"> <!-- If user is truthy.. it will show-->
      <h2>
        {{user.name}}
      </h2>
      <img ng-src="http://www.gravatar.com/avatar/{{user.gravatar_id}}"  title="{{user.name}}">
       Order:
      <select ng-model="repoSortOrder">
        <option value="+name">Name</option>
        <option value="-stargazers_count">Stars</option>
        <option value="+language">Language</option>
      </select>
    </div>
    
    <table>
      <thead>
        <tr>
          <th>Name</th>
          <th>Stars</th>
          <th>Language</th>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="repo in repos | orderBy:repoSortOrder">
          <td>{{repo.name}}</td>
          <td>{{repo.stargazers_count | number}}</td>
          <td>{{repo.language}}</td>
        </tr>
      </tbody>
    </table>
This is the app created by Scott Allen in his Pluralsight Course
"Getting Started with Angular.js"

It is for those wishing to skip the incremental code writing.
// Parker Gordon
// 12/20/2015
// api comes from api.github.com/users/angular

(function() {

  var app = angular.module('githubViewer', []);
  // module for non globalize dev ^^

  var MainController = function($scope, $interval, $location) { //Not sure about this passing objects and such

    var decrementCountdown = function() {
      $scope.countdown -= 1;
      if ($scope.countdown < 1) {
        $scope.search($scope.username);
      }
    }

    var countdownInternval = null;
    var startCountdown = function() {
      countdownInterval = $interval(decrementCountdown, 1000, $scope.countdown);
    }

    $scope.search = function(username) {
      if (countdownInterval) {
        $interval.cancel(countdownInterval);
        $scope.countdown = null;
      }
      // 
    }

    $scope.username = "angular";
    $scope.countdown = 5;
    startCountdown();
  };

  app.controller('MainController', MainController);

}());

  <div>
  {{countdown}}
      <form name="searchUser" ng-submit="search(username)">
      <input type="search" required="" placeholder="Username to find" ng-model="username" />
      <input type="submit" value="Search" />
    </form>
  </div>
var app = angular.module('plunker', []);
// module for non globalize dev ^^

app.controller('MainController', function($scope,$http,$interval,$log,$anchorScroll,$location) { //Not sure about this passing objects and such
  
  var onUserComplete = function(response){
    $scope.user = response.data;
    $http.get($scope.user.repos_url)
         .then(onRepos, onError);
  };
  
  var onRepos = function(response){
    $scope.repos = response.data;
    $location.hash("userDetails");
    $anchorScroll(); // should scroll to the user list
  }
  
  var onError = function(reason){
    $scope.error = "Could not fetch the user"
  };
  
  var decrementCountdown = function(){
    $scope.countdown -= 1;
    if($scope.countdown < 1){
      $scope.search($scope.username);
    }
    
  }
  
  var countdownInternval = null;
  var startCountdown = function(){
    countdownInterval = $interval(decrementCountdown, 1000, $scope.countdown);
  }
  
  $scope.search = function(username){
    $log.info("Searching for " + username);
    $http.get("https://api.github.com/users/" + username)
      .then(onUserComplete, onError);
    if(countdownInterval) {
       $interval.cancel(countdownInterval);
       $scope.countdown = null;
    }
  }
  //$http.get("https://api.github.com/users/gordon868")
  //  .then(onUserComplete, onError);
  
  $scope.parkerImgSrc = "http://armstrongpirates.com/images/mgolf/pspgordon0910.jpg"
  $scope.message = "GitHub viewer";
  $scope.repoSortorder = "-stargazers_count";
  $scope.countdown = 5;
  startCountdown();
  
});