diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..68b9e27 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +bower_components/ diff --git a/.idea/LearningGoesOn.iml b/.idea/LearningGoesOn.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/LearningGoesOn.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e466a86 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + 1.6 + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2e00484 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0577dc3 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Code Kata Todo App for Yalamanda, Shireesh, Venkatesh + +This Node app built with MongoDB and Angular. For learning purpose. + +Node provides the RESTful API. Angular provides the frontend and accesses the API. MongoDB stores like a hoarder. + +## Requirements + +- [Node and npm](http://nodejs.org) + +## Installation + +1. Clone the repository: `git clone git@github.com:scotch-io/node-todo` +2. Install the application: `npm install` +3. Start the server: `node server.js` +4. View in browser at `http://localhost:8080` + +Note: Use your own repository by placing the below code into package.json above dependencies: +"repository" :{ + "type" : "git", + "url" : "git@git.example.com:example.git" + } + diff --git a/app/routes.js b/app/routes.js new file mode 100644 index 0000000..95cc819 --- /dev/null +++ b/app/routes.js @@ -0,0 +1 @@ +var app = angular.module('CodeKata',[]); diff --git a/app/views/index.html b/app/views/index.html new file mode 100644 index 0000000..db8c360 --- /dev/null +++ b/app/views/index.html @@ -0,0 +1,15 @@ + + + + Hello World, AngularJs + + + + Write some text in textbox: + + +

Hello {{ sometext }}

+ + + + \ No newline at end of file diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..9bdba7d --- /dev/null +++ b/bower.json @@ -0,0 +1,8 @@ +{ + "name": "Codekata", + "version": "0.0.1", + "dependencies": { + "angular" : "~1.3.0" + }, + "analytics": false +} \ No newline at end of file diff --git a/config/database.js b/config/database.js new file mode 100644 index 0000000..1f4cfc5 --- /dev/null +++ b/config/database.js @@ -0,0 +1,4 @@ +module.exports = { + remoteUrl : 'mongodb://node:nodeuser@mongo.onmodulus.net:27017/uwO3mypu', + localUrl: 'mongodb://localhost/meanstacktutorials' +}; diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 0000000..94f9b83 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,66 @@ +0 info it worked if it ends with ok +1 verbose cli [ 'C:\\Program Files (x86)\\nodejs\\\\node.exe', +1 verbose cli 'C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', +1 verbose cli 'install' ] +2 info using npm@1.4.28 +3 info using node@v0.10.36 +4 verbose node symlink C:\Program Files (x86)\nodejs\\node.exe +5 warn package.json Codekata@0.0.1 No repository field. +6 verbose readDependencies using package.json deps +7 verbose install where, deps [ 'D:\\Code_WarRoom', +7 verbose install [ 'mongoose', +7 verbose install 'morgan', +7 verbose install 'body-parser', +7 verbose install 'method-override', +7 verbose install 'karma', +7 verbose install 'karma-jasmine', +7 verbose install 'karma-phantomjs-launcher', +7 verbose install 'bower' ] ] +8 info preinstall Codekata@0.0.1 +9 warn package.json karma-phantomjs-launcher@0.1.4 No README data +10 verbose readDependencies using package.json deps +11 verbose already installed skipping mongoose@~3.8.13 D:\Code_WarRoom +12 verbose already installed skipping morgan@~1.1.1 D:\Code_WarRoom +13 verbose already installed skipping body-parser@~1.4.3 D:\Code_WarRoom +14 verbose already installed skipping method-override@~2.1.1 D:\Code_WarRoom +15 verbose already installed skipping karma@0.12.16 D:\Code_WarRoom +16 verbose already installed skipping karma-jasmine@0.1.5 D:\Code_WarRoom +17 verbose already installed skipping karma-phantomjs-launcher@0.1.4 D:\Code_WarRoom +18 verbose already installed skipping bower@1.2.6 D:\Code_WarRoom +19 silly resolved [] +20 info build D:\Code_WarRoom +21 verbose linkStuff [ false, false, false, 'D:\\' ] +22 info linkStuff Codekata@0.0.1 +23 verbose linkBins Codekata@0.0.1 +24 verbose linkMans Codekata@0.0.1 +25 verbose rebuildBundles Codekata@0.0.1 +26 verbose rebuildBundles [ '.bin', +26 verbose rebuildBundles 'body-parser', +26 verbose rebuildBundles 'bower', +26 verbose rebuildBundles 'karma', +26 verbose rebuildBundles 'karma-jasmine', +26 verbose rebuildBundles 'karma-phantomjs-launcher', +26 verbose rebuildBundles 'method-override', +26 verbose rebuildBundles 'mongoose', +26 verbose rebuildBundles 'morgan' ] +27 info install Codekata@0.0.1 +28 info postinstall Codekata@0.0.1 +29 verbose unsafe-perm in lifecycle true +30 info Codekata@0.0.1 Failed to exec postinstall script +31 error Codekata@0.0.1 postinstall: `node node_modules/bower/bin/bower install` +31 error Exit status 1 +32 error Failed at the Codekata@0.0.1 postinstall script. +32 error This is most likely a problem with the Codekata package, +32 error not with npm itself. +32 error Tell the author that this fails on your system: +32 error node node_modules/bower/bin/bower install +32 error You can get their info via: +32 error npm owner ls Codekata +32 error There is likely additional logging output above. +33 error System Windows_NT 6.1.7601 +34 error command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" +35 error cwd D:\Code_WarRoom +36 error node -v v0.10.36 +37 error npm -v 1.4.28 +38 error code ELIFECYCLE +39 verbose exit [ 1, true ] diff --git a/package.json b/package.json new file mode 100644 index 0000000..4aca068 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name" : "Codekata", + "version" : "0.0.1", + "description" : "Learning application.", + "readme" : "README.md", + "main" : "server.js", + "author" : "Venki", + "dependencies" : { + "express" : "~4.13.4", + "mongoose" : "~3.8.13", + "morgan" : "~1.1.1", + "body-parser" : "~1.4.3", + "method-override" : "~2.1.1", + "karma" : "0.12.16", + "karma-jasmine" : "0.1.5", + "karma-phantomjs-launcher": "0.1.4", + "bower": "1.3.8" + }, + "scripts": { + "postinstall": "node node_modules/bower/bin/bower install" + } +} diff --git a/server.js b/server.js new file mode 100644 index 0000000..3037fa1 --- /dev/null +++ b/server.js @@ -0,0 +1 @@ +//Need to add lines to run the angular app using Node diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..3bb8664 --- /dev/null +++ b/src/index.html @@ -0,0 +1,83 @@ + + + + + + + + + + Node/Angular Todo App + + + + + + + + + + + + + + + + +
+ + +
+

I'm a Todo-aholic {{ todos.length }}

+
+ + +
+
+ + + + +
+ +
+ +

+ +

+ +
+
+ + +
+
+
+
+ + + +
+ + + +
+
+
+ +
+

A demo by Scotch.

+

Read the tutorial.

+
+ +
+ + + diff --git a/src/js/controllers/main.js b/src/js/controllers/main.js new file mode 100644 index 0000000..7cb2ce2 --- /dev/null +++ b/src/js/controllers/main.js @@ -0,0 +1,50 @@ +angular.module('todoController', []) + + // inject the Todo service factory into our controller + .controller('mainController', ['$scope','$http','Todos', function($scope, $http, Todos) { + $scope.formData = {}; + $scope.loading = true; + + // GET ===================================================================== + // when landing on the page, get all todos and show them + // use the service to get all the todos + Todos.get() + .success(function(data) { + $scope.todos = data; + $scope.loading = false; + }); + + // CREATE ================================================================== + // when submitting the add form, send the text to the node API + $scope.createTodo = function() { + + // validate the formData to make sure that something is there + // if form is empty, nothing will happen + if ($scope.formData.text != undefined) { + $scope.loading = true; + + // call the create function from our service (returns a promise object) + Todos.create($scope.formData) + + // if successful creation, call our get function to get all the new todos + .success(function(data) { + $scope.loading = false; + $scope.formData = {}; // clear the form so our user is ready to enter another + $scope.todos = data; // assign our new list of todos + }); + } + }; + + // DELETE ================================================================== + // delete a todo after checking it + $scope.deleteTodo = function(id) { + $scope.loading = true; + + Todos.delete(id) + // if successful creation, call our get function to get all the new todos + .success(function(data) { + $scope.loading = false; + $scope.todos = data; // assign our new list of todos + }); + }; + }]); \ No newline at end of file diff --git a/src/js/core.js b/src/js/core.js new file mode 100644 index 0000000..28dbeed --- /dev/null +++ b/src/js/core.js @@ -0,0 +1 @@ +angular.module('scotchTodo', ['todoController', 'todoService']); diff --git a/src/js/services/todos.js b/src/js/services/todos.js new file mode 100644 index 0000000..49761e7 --- /dev/null +++ b/src/js/services/todos.js @@ -0,0 +1,17 @@ +angular.module('todoService', []) + + // super simple service + // each function returns a promise object + .factory('Todos', ['$http',function($http) { + return { + get : function() { + return $http.get('/api/todos'); + }, + create : function(todoData) { + return $http.post('/api/todos', todoData); + }, + delete : function(id) { + return $http.delete('/api/todos/' + id); + } + } + }]); \ No newline at end of file