diff --git a/.bowerrc b/.bowerrc index cbd84b1d08..1b84277940 100644 --- a/.bowerrc +++ b/.bowerrc @@ -1,8 +1,3 @@ { - "directory": "public/lib", - "storage": { - "packages": ".bower-cache", - "registry": ".bower-registry" - }, - "tmp": ".bower-tmp" + "directory": "public/lib" } diff --git a/.jshintrc b/.jshintrc index 2ba63e0a84..dfefcb4bb7 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,41 +1,41 @@ { - "node": true, // Enable globals available when code is running inside of the NodeJS runtime environment. - "browser": true, // Standard browser globals e.g. `window`, `document`. - "esnext": true, // Allow ES.next specific features such as `const` and `let`. - "bitwise": false, // Prohibit bitwise operators (&, |, ^, etc.). - "camelcase": false, // Permit only camelcase for `var` and `object indexes`. - "curly": false, // Require {} for every new block or scope. - "eqeqeq": true, // Require triple equals i.e. `===`. - "immed": true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef": true, // Prohibit variable use before definition. - "newcap": true, // Require capitalization of all constructor functions e.g. `new F()`. - "noarg": true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "quotmark": "single", // Define quotes to string values. - "regexp": true, // Prohibit `.` and `[^...]` in regular expressions. - "undef": true, // Require all non-global variables be declared before they are used. - "unused": false, // Warn unused variables. - "strict": true, // Require `use strict` pragma in every file. - "trailing": true, // Prohibit trailing whitespaces. - "smarttabs": false, // Suppresses warnings about mixed tabs and spaces - "globals": { // Globals variables. - "angular": true, - "ApplicationConfiguration": true - }, - "predef": [ // Extra globals. - "define", - "require", - "exports", - "module", - "describe", - "before", - "beforeEach", - "after", - "afterEach", - "it", - "inject", - "expect" - ], - "indent": 4, // Specify indentation spacing - "devel": true, // Allow development statements e.g. `console.log();`. - "noempty": true // Prohibit use of empty blocks. + "node": true, // Enable globals available when code is running inside of the NodeJS runtime environment. + "browser": true, // Standard browser globals e.g. `window`, `document`. + "esnext": true, // Allow ES.next specific features such as `const` and `let`. + "bitwise": false, // Prohibit bitwise operators (&, |, ^, etc.). + "camelcase": false, // Permit only camelcase for `var` and `object indexes`. + "curly": false, // Require {} for every new block or scope. + "eqeqeq": true, // Require triple equals i.e. `===`. + "immed": true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` + "latedef": true, // Prohibit variable use before definition. + "newcap": true, // Require capitalization of all constructor functions e.g. `new F()`. + "noarg": true, // Prohibit use of `arguments.caller` and `arguments.callee`. + "quotmark": "single", // Define quotes to string values. + "regexp": true, // Prohibit `.` and `[^...]` in regular expressions. + "undef": true, // Require all non-global variables be declared before they are used. + "unused": false, // Warn unused variables. + "strict": true, // Require `use strict` pragma in every file. + "trailing": true, // Prohibit trailing whitespaces. + "smarttabs": false, // Suppresses warnings about mixed tabs and spaces + "globals": { // Globals variables. + "angular": true, + "ApplicationConfiguration": true + }, + "predef": [ // Extra globals. + "define", + "require", + "exports", + "module", + "describe", + "before", + "beforeEach", + "after", + "afterEach", + "it", + "inject", + "expect" + ], + "indent": 4, // Specify indentation spacing + "devel": true, // Allow development statements e.g. `console.log();`. + "noempty": true // Prohibit use of empty blocks. } \ No newline at end of file diff --git a/app/controllers/articles.js b/app/controllers/articles.js index f650845a97..1967b5a883 100644 --- a/app/controllers/articles.js +++ b/app/controllers/articles.js @@ -4,104 +4,104 @@ * Module dependencies. */ var mongoose = require('mongoose'), - Article = mongoose.model('Article'), - _ = require('lodash'); + Article = mongoose.model('Article'), + _ = require('lodash'); /** * Create a article */ exports.create = function(req, res) { - var article = new Article(req.body); - article.user = req.user; + var article = new Article(req.body); + article.user = req.user; - article.save(function(err) { - if (err) { - return res.send('users/signup', { - errors: err.errors, - article: article - }); - } else { - res.jsonp(article); - } - }); + article.save(function(err) { + if (err) { + return res.send('users/signup', { + errors: err.errors, + article: article + }); + } else { + res.jsonp(article); + } + }); }; /** * Show the current article */ exports.read = function(req, res) { - res.jsonp(req.article); + res.jsonp(req.article); }; /** * Update a article */ exports.update = function(req, res) { - var article = req.article; + var article = req.article; - article = _.extend(article, req.body); + article = _.extend(article, req.body); - article.save(function(err) { - if (err) { - res.render('error', { - status: 500 - }); - } else { - res.jsonp(article); - } - }); + article.save(function(err) { + if (err) { + res.render('error', { + status: 500 + }); + } else { + res.jsonp(article); + } + }); }; /** * Delete an article */ exports.delete = function(req, res) { - var article = req.article; + var article = req.article; - article.remove(function(err) { - if (err) { - res.render('error', { - status: 500 - }); - } else { - res.jsonp(article); - } - }); + article.remove(function(err) { + if (err) { + res.render('error', { + status: 500 + }); + } else { + res.jsonp(article); + } + }); }; /** * List of Articles */ exports.list = function(req, res) { - Article.find().sort('-created').populate('user', 'displayName').exec(function(err, articles) { - if (err) { - res.render('error', { - status: 500 - }); - } else { - res.jsonp(articles); - } - }); + Article.find().sort('-created').populate('user', 'displayName').exec(function(err, articles) { + if (err) { + res.render('error', { + status: 500 + }); + } else { + res.jsonp(articles); + } + }); }; /** * Article middleware */ exports.articleByID = function(req, res, next, id) { - Article.load(id, function(err, article) { - if (err) return next(err); - if (!article) return next(new Error('Failed to load article ' + id)); - req.article = article; - next(); - }); + Article.load(id, function(err, article) { + if (err) return next(err); + if (!article) return next(new Error('Failed to load article ' + id)); + req.article = article; + next(); + }); }; /** * Article authorization middleware */ exports.hasAuthorization = function(req, res, next) { - if (req.article.user.id !== req.user.id) { - return res.send(403, 'User is not authorized'); - } - next(); + if (req.article.user.id !== req.user.id) { + return res.send(403, 'User is not authorized'); + } + next(); }; \ No newline at end of file diff --git a/app/controllers/core.js b/app/controllers/core.js index ea0642e92e..7073572639 100644 --- a/app/controllers/core.js +++ b/app/controllers/core.js @@ -4,7 +4,7 @@ * Module dependencies. */ exports.index = function(req, res) { - res.render('index.html', { + res.render('index.html', { user: req.user || null - }); -}; + }); +}; \ No newline at end of file diff --git a/app/models/article.js b/app/models/article.js index 42a560b1b5..9d689cdcc3 100644 --- a/app/models/article.js +++ b/app/models/article.js @@ -4,48 +4,48 @@ * Module dependencies. */ var mongoose = require('mongoose'), - Schema = mongoose.Schema; + Schema = mongoose.Schema; /** * Article Schema */ var ArticleSchema = new Schema({ - created: { - type: Date, - default: Date.now - }, - title: { - type: String, - default: '', - trim: true - }, - content: { - type: String, - default: '', - trim: true - }, - user: { - type: Schema.ObjectId, - ref: 'User' - } + created: { + type: Date, + default: Date.now + }, + title: { + type: String, + default: '', + trim: true + }, + content: { + type: String, + default: '', + trim: true + }, + user: { + type: Schema.ObjectId, + ref: 'User' + } }); /** * Validations */ ArticleSchema.path('title').validate(function(title) { - return title.length; + return title.length; }, 'Title cannot be blank'); /** * Statics */ ArticleSchema.statics = { - load: function(id, cb) { - this.findOne({ - _id: id - }).populate('user', 'displayName').exec(cb); - } + load: function(id, cb) { + this.findOne({ + _id: id + }).populate('user', 'displayName').exec(cb); + } }; mongoose.model('Article', ArticleSchema); \ No newline at end of file diff --git a/app/models/user.js b/app/models/user.js index a34e2d8cb9..3e0f822b0e 100755 --- a/app/models/user.js +++ b/app/models/user.js @@ -14,28 +14,28 @@ var UserSchema = new Schema({ firstName: { type: String, default: '', - trim: true + trim: true }, lastName: { type: String, default: '', - trim: true + trim: true }, displayName: { type: String, default: '', - trim: true + trim: true }, email: { type: String, default: '', - trim: true, + trim: true, unique: true }, username: { type: String, default: '', - trim: true, + trim: true, unique: true }, provider: { diff --git a/app/routes/articles.js b/app/routes/articles.js index 22a0d5c7b4..e6739a8a3c 100644 --- a/app/routes/articles.js +++ b/app/routes/articles.js @@ -1,16 +1,16 @@ 'use strict'; module.exports = function(app) { - var users = require('../../app/controllers/users'); - var articles = require('../../app/controllers/articles'); + var users = require('../../app/controllers/users'); + var articles = require('../../app/controllers/articles'); - // Article Routes - app.get('/articles', articles.list); - app.post('/articles', users.requiresLogin, articles.create); - app.get('/articles/:articleId', articles.read); - app.put('/articles/:articleId', users.requiresLogin, articles.hasAuthorization, articles.update); - app.del('/articles/:articleId', users.requiresLogin, articles.hasAuthorization, articles.delete); + // Article Routes + app.get('/articles', articles.list); + app.post('/articles', users.requiresLogin, articles.create); + app.get('/articles/:articleId', articles.read); + app.put('/articles/:articleId', users.requiresLogin, articles.hasAuthorization, articles.update); + app.del('/articles/:articleId', users.requiresLogin, articles.hasAuthorization, articles.delete); - // Finish by binding the article middleware - app.param('articleId', articles.articleByID); + // Finish by binding the article middleware + app.param('articleId', articles.articleByID); }; \ No newline at end of file diff --git a/app/routes/core.js b/app/routes/core.js index 63e84a32ad..ba232004ee 100644 --- a/app/routes/core.js +++ b/app/routes/core.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = function(app) { - // Root routing - var core = require('../../app/controllers/core'); - app.get('/', core.index); + // Root routing + var core = require('../../app/controllers/core'); + app.get('/', core.index); }; \ No newline at end of file diff --git a/app/views/404.html b/app/views/404.html index 5c89d5dd8c..c993001842 100644 --- a/app/views/404.html +++ b/app/views/404.html @@ -3,6 +3,6 @@ {% block content %}

Page Not Found

-{{url}} is not a valid path.
+	{{url}} is not a valid path.
 
{% endblock %} \ No newline at end of file diff --git a/app/views/500.html b/app/views/500.html index da351318a6..7bbded9e38 100644 --- a/app/views/500.html +++ b/app/views/500.html @@ -3,6 +3,6 @@ {% block content %}

Server Error

-{{error}}
+	{{error}}
 
{% endblock %} \ No newline at end of file diff --git a/app/views/layout.html b/app/views/layout.html index 169224c274..0c3d558549 100644 --- a/app/views/layout.html +++ b/app/views/layout.html @@ -2,84 +2,84 @@ - {{title}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% for modulesCSSFile in modulesCSSFiles %} - - {% endfor %} - - - + {{title}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% for modulesCSSFile in modulesCSSFiles %} + {% endfor %} + + + - -
-
- {% block content %}{% endblock %} -
-
- + +
+
+ {% block content %}{% endblock %} +
+
+ - - - - - - - - - - - - - - - - - {% for modulesJSFile in modulesJSFiles %} - - {% endfor %} - - {% if process.env.NODE_ENV === 'development' %} - - + + + + + + + + + + + + + + + + + {% for modulesJSFile in modulesJSFiles %} + + {% endfor %} + + {% if process.env.NODE_ENV === 'development' %} + + {% endif %} + \ No newline at end of file diff --git a/config/env/all.js b/config/env/all.js index 02fa51157d..718be6f34d 100644 --- a/config/env/all.js +++ b/config/env/all.js @@ -1,17 +1,17 @@ 'use strict'; var path = require('path'), - rootPath = path.normalize(__dirname + '/../..'); + rootPath = path.normalize(__dirname + '/../..'); module.exports = { - app: { - title: 'MEAN.JS', - description: 'Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js', - keywords: 'mongodb, express, angularjs, node.js, mongoose, passport' - }, + app: { + title: 'MEAN.JS', + description: 'Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js', + keywords: 'mongodb, express, angularjs, node.js, mongoose, passport' + }, db: process.env.MONGOHQ_URL || process.env.MONGOLAB_URI, - root: rootPath, - port: process.env.PORT || 3000, + root: rootPath, + port: process.env.PORT || 3000, templateEngine: 'swig', sessionSecret: 'MEAN', sessionCollection: 'sessions' diff --git a/config/env/development.js b/config/env/development.js index 7f94e9d7ff..edde709ce0 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -1,28 +1,28 @@ 'use strict'; module.exports = { - db: 'mongodb://localhost/mean-dev', - app: { - title: 'MEAN.JS - Development Environment' - }, - facebook: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/facebook/callback' - }, - twitter: { - clientID: 'CONSUMER_KEY', - clientSecret: 'CONSUMER_SECRET', - callbackURL: 'http://localhost:3000/auth/twitter/callback' - }, - google: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/google/callback' - }, - linkedin: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://www.temoj.com/auth/linkedin/callback' - } + db: 'mongodb://localhost/mean-dev', + app: { + title: 'MEAN.JS - Development Environment' + }, + facebook: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback' + }, + twitter: { + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback' + }, + google: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback' + }, + linkedin: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://www.temoj.com/auth/linkedin/callback' + } }; \ No newline at end of file diff --git a/config/env/production.js b/config/env/production.js index 3592997a0d..098fad2eba 100644 --- a/config/env/production.js +++ b/config/env/production.js @@ -1,25 +1,25 @@ 'use strict'; module.exports = { - db: 'mongodb://localhost/mean', - facebook: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/facebook/callback' - }, - twitter: { - clientID: 'CONSUMER_KEY', - clientSecret: 'CONSUMER_SECRET', - callbackURL: 'http://localhost:3000/auth/twitter/callback' - }, - google: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/google/callback' - }, - linkedin: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://www.temoj.com/auth/linkedin/callback' - } + db: 'mongodb://localhost/mean', + facebook: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback' + }, + twitter: { + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback' + }, + google: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback' + }, + linkedin: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://www.temoj.com/auth/linkedin/callback' + } }; \ No newline at end of file diff --git a/config/env/test.js b/config/env/test.js index 3c6c67d6ec..a5a01a2998 100644 --- a/config/env/test.js +++ b/config/env/test.js @@ -1,29 +1,29 @@ 'use strict'; module.exports = { - db: 'mongodb://localhost/mean-test', - port: 3001, - app: { - title: 'MEAN.JS - Test Environment' - }, - facebook: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/facebook/callback' - }, - twitter: { - clientID: 'CONSUMER_KEY', - clientSecret: 'CONSUMER_SECRET', - callbackURL: 'http://localhost:3000/auth/twitter/callback' - }, - google: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/google/callback' - }, - linkedin: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/linkedin/callback' - } + db: 'mongodb://localhost/mean-test', + port: 3001, + app: { + title: 'MEAN.JS - Test Environment' + }, + facebook: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback' + }, + twitter: { + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback' + }, + google: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback' + }, + linkedin: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/linkedin/callback' + } }; \ No newline at end of file diff --git a/config/env/travis.js b/config/env/travis.js index 6b49f2310c..cc03946045 100644 --- a/config/env/travis.js +++ b/config/env/travis.js @@ -1,29 +1,29 @@ 'use strict'; module.exports = { - db: 'mongodb://localhost/mean-travis', - port: 3001, - app: { - title: 'MEAN.JS - Travis Environment' - }, - facebook: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/facebook/callback' - }, - twitter: { - clientID: 'CONSUMER_KEY', - clientSecret: 'CONSUMER_SECRET', - callbackURL: 'http://localhost:3000/auth/twitter/callback' - }, - google: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/google/callback' - }, - linkedin: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/linkedin/callback' - } + db: 'mongodb://localhost/mean-travis', + port: 3001, + app: { + title: 'MEAN.JS - Travis Environment' + }, + facebook: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback' + }, + twitter: { + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback' + }, + google: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback' + }, + linkedin: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/linkedin/callback' + } }; \ No newline at end of file diff --git a/karma.conf.js b/karma.conf.js index f518922ec3..088ab4f4b7 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -10,56 +10,56 @@ var modulesJSFiles = utilities.walk('./public/modules', /(.*)\.(js)/, null, null // Karma configuration module.exports = function(config) { - config.set({ - // Frameworks to use - frameworks: ['jasmine'], + config.set({ + // Frameworks to use + frameworks: ['jasmine'], - // List of files / patterns to load in the browser - files: [ - 'public/lib/angular/angular.js', - 'public/lib/angular-mocks/angular-mocks.js', - 'public/lib/angular-cookies/angular-cookies.js', - 'public/lib/angular-resource/angular-resource.js', - 'public/lib/angular-route/angular-route.js', - 'public/lib/angular-bootstrap/ui-bootstrap.js', - 'public/lib/angular-ui-utils/ui-utils.js', - 'public/js/config.js', - 'public/js/application.js', - ].concat(modulesJSFiles), + // List of files / patterns to load in the browser + files: [ + 'public/lib/angular/angular.js', + 'public/lib/angular-mocks/angular-mocks.js', + 'public/lib/angular-cookies/angular-cookies.js', + 'public/lib/angular-resource/angular-resource.js', + 'public/lib/angular-route/angular-route.js', + 'public/lib/angular-bootstrap/ui-bootstrap.js', + 'public/lib/angular-ui-utils/ui-utils.js', + 'public/js/config.js', + 'public/js/application.js', + ].concat(modulesJSFiles), - // Test results reporter to use - // Possible values: 'dots', 'progress', 'junit', 'growl', 'coverage' - //reporters: ['progress'], - reporters: ['progress'], + // Test results reporter to use + // Possible values: 'dots', 'progress', 'junit', 'growl', 'coverage' + //reporters: ['progress'], + reporters: ['progress'], - // Web server port - port: 9876, + // Web server port + port: 9876, - // Enable / disable colors in the output (reporters and logs) - colors: true, + // Enable / disable colors in the output (reporters and logs) + colors: true, - // Level of logging - // Possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - // Enable / disable watching file and executing tests whenever any file changes - autoWatch: true, + // Level of logging + // Possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, - // Start these browsers, currently available: - // - Chrome - // - ChromeCanary - // - Firefox - // - Opera - // - Safari (only Mac) - // - PhantomJS - // - IE (only Windows) - browsers: ['PhantomJS'], + // Enable / disable watching file and executing tests whenever any file changes + autoWatch: true, - // If browser does not capture in given timeout [ms], kill it - captureTimeout: 60000, + // Start these browsers, currently available: + // - Chrome + // - ChromeCanary + // - Firefox + // - Opera + // - Safari (only Mac) + // - PhantomJS + // - IE (only Windows) + browsers: ['PhantomJS'], - // Continuous Integration mode - // If true, it capture browsers, run tests and exit - singleRun: true - }); + // If browser does not capture in given timeout [ms], kill it + captureTimeout: 60000, + + // Continuous Integration mode + // If true, it capture browsers, run tests and exit + singleRun: true + }); }; \ No newline at end of file diff --git a/package.json b/package.json index debaa3bbc0..e9ffc7e6d8 100755 --- a/package.json +++ b/package.json @@ -1,58 +1,58 @@ { - "name": "meanjs", - "description": "Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js.", - "version": "0.1.0", - "private": false, - "author": "https://github.com/meanjs/mean/graphs/contributors", - "repository": { - "type": "git", - "url": "https://github.com/meanjs/mean.git" - }, - "engines": { - "node": "0.10.x", - "npm": "1.2.x" - }, - "scripts": { - "start": "node node_modules/grunt-cli/bin/grunt", - "test": "node node_modules/grunt-cli/bin/grunt test", - "postinstall": "node node_modules/bower/bin/bower update" - }, - "dependencies": { - "express": "latest", - "consolidate": "latest", - "swig": "latest", - "mongoose": "latest", - "connect-mongo": "latest", - "connect-flash": "latest", - "crypto": "latest", - "passport": "latest", - "passport-local": "latest", - "passport-facebook": "latest", - "passport-twitter": "latest", - "passport-linkedin": "latest", - "passport-google-oauth": "latest", - "lodash": "latest", - "forever": "latest", - "bower": "latest", - "grunt": "latest", - "grunt-cli": "latest", - "grunt-env": "latest" - }, - "devDependencies": { - "supertest": "latest", - "should": "latest", - "grunt-node-inspector": "latest", - "grunt-contrib-watch": "latest", - "grunt-contrib-jshint": "latest", - "grunt-nodemon": "latest", - "grunt-concurrent": "latest", - "grunt-mocha-test": "latest", - "grunt-karma": "latest", - "karma": "latest", - "karma-jasmine": "latest", - "karma-coverage": "latest", - "karma-chrome-launcher": "latest", - "karma-firefox-launcher": "latest", - "karma-phantomjs-launcher": "latest" - } + "name": "meanjs", + "description": "Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js.", + "version": "0.1.0", + "private": false, + "author": "https://github.com/meanjs/mean/graphs/contributors", + "repository": { + "type": "git", + "url": "https://github.com/meanjs/mean.git" + }, + "engines": { + "node": "0.10.x", + "npm": "1.2.x" + }, + "scripts": { + "start": "node node_modules/grunt-cli/bin/grunt", + "test": "node node_modules/grunt-cli/bin/grunt test", + "postinstall": "node node_modules/bower/bin/bower update" + }, + "dependencies": { + "express": "latest", + "consolidate": "latest", + "swig": "latest", + "mongoose": "latest", + "connect-mongo": "latest", + "connect-flash": "latest", + "crypto": "latest", + "passport": "latest", + "passport-local": "latest", + "passport-facebook": "latest", + "passport-twitter": "latest", + "passport-linkedin": "latest", + "passport-google-oauth": "latest", + "lodash": "latest", + "forever": "latest", + "bower": "latest", + "grunt": "latest", + "grunt-cli": "latest", + "grunt-env": "latest" + }, + "devDependencies": { + "supertest": "latest", + "should": "latest", + "grunt-node-inspector": "latest", + "grunt-contrib-watch": "latest", + "grunt-contrib-jshint": "latest", + "grunt-nodemon": "latest", + "grunt-concurrent": "latest", + "grunt-mocha-test": "latest", + "grunt-karma": "latest", + "karma": "latest", + "karma-jasmine": "latest", + "karma-coverage": "latest", + "karma-chrome-launcher": "latest", + "karma-firefox-launcher": "latest", + "karma-phantomjs-launcher": "latest" + } } \ No newline at end of file