diff --git a/web/gui/src/main/webapp/app/view/app/app.js b/web/gui/src/main/webapp/app/view/app/app.js
new file mode 100644
index 0000000..d2bab39
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/app/app.js
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- App View Module
+ */
+
+(function () {
+    'use strict';
+
+    angular.module('ovApp', [])
+    .controller('OvAppCtrl',
+        ['$log', '$scope', '$location', 'FnService', 'WebSocketService',
+
+        function ($log, $scope, $location, fs, wss) {
+            var self = this;
+            self.appData = [];
+
+            $scope.responseCallback = function(data) {
+                self.appData = data.applications;
+                $scope.$apply();
+            };
+
+            $scope.sortCallback = function (requestParams) {
+                wss.sendEvent('appDataRequest', requestParams);
+            };
+
+            $scope.selectedAppId = null;
+            $scope.setSelected = function (appId) {
+                $scope.selectedAppId = appId;
+            };
+
+            var handlers = {
+                appDataResponse: $scope.responseCallback
+            };
+            wss.bindHandlers(handlers);
+
+            // Cleanup on destroyed scope
+            $scope.$on('$destroy', function () {
+                wss.unbindHandlers(handlers);
+            });
+
+            $scope.sortCallback();
+
+            $log.log('OvAppCtrl has been created');
+        }]);
+}());
