From e0916ce4ce75ad3d21a492b8739caa468f08f54d Mon Sep 17 00:00:00 2001 From: yo mama Date: Thu, 4 Dec 2014 23:16:17 -0800 Subject: first commit --- .bowerrc | 3 ++ .gitignore | 2 ++ Gruntfile.js | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ bin/app.js | 33 +++++++++++++++++++ config/main.js | 13 ++++++++ config/rendering.js | 18 ++++++++++ config/routes.js | 5 +++ controllers/index.js | 4 +++ package.json | 26 +++++++++++++++ 9 files changed, 197 insertions(+) create mode 100644 .bowerrc create mode 100644 .gitignore create mode 100644 Gruntfile.js create mode 100755 bin/app.js create mode 100755 config/main.js create mode 100755 config/rendering.js create mode 100755 config/routes.js create mode 100755 controllers/index.js create mode 100644 package.json diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..1e6420b --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "lib/vendor" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cc1ea69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +public/vendor/* diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..44a2ca7 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,93 @@ +module.exports = function(grunt) { + // 1. All configuration goes here + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + express: { + options: { + // Override the command used to start the server. + // (do not use 'coffee' here, the server will not be able to restart + // see below at opts for coffee-script support) + cmd: process.argv[0], + + // Will turn into: `node OPT1 OPT2 ... OPTN path/to/server.js ARG1 ARG2 ... ARGN` + // (e.g. opts: ['node_modules/coffee-script/bin/coffee'] will correctly parse coffee-script) + opts: [ ], + args: [ ], + + // Setting to `false` will effectively just run `node path/to/server.js` + background: true, + + // Called when the spawned server throws errors + fallback: function() {}, + + // Override node env's PORT +// port: 3000, + + // Override node env's NODE_ENV +// node_env: undefined, + + // Consider the server to be "running" after an explicit delay (in milliseconds) + // (e.g. when server has no initial output) + delay: 0, + + // Regular expression that matches server output to indicate it is "running" + output: ".+", + + // Set --debug (true | false | integer from 1024 to 65535, has precedence over breakOnFirstLine) + debug: false, + + // Set --debug-brk (true | false | integer from 1024 to 65535) + breakOnFirstLine: false, + + // Object with properties `out` and `err` both will take a path to a log file and + // append the output of the server. Make sure the folders exist. + logs: undefined + }, + dev: { + options: { + script: 'bin/app.js' + } + }, +// prod: { +// options: { +// script: 'path/to/prod/server.js', +// node_env: 'production' +// } +// }, +// test: { +// options: { +// script: 'path/to/test/server.js' +// } +// } + }, + watch: { + options: { + livereload: true + }, + webserver: { + files: [ 'bin/app.js', 'config/*' ], + tasks: [ 'express:dev' ], + options: { + spawn: false + } + }, +// less: { +// files: ["public/**/*.less"], +// tasks: ["less"], +// options: { +// livereload: false +// } +// }, + public: { + files: ["public/**/*.css", "public/**/*.js"] + } + } + }); + + // 3. Where we tell Grunt we plan to use this plug-in. + grunt.loadNpmTasks('grunt-express-server'); + grunt.loadNpmTasks('grunt-contrib-watch'); + // 4. Where we tell Grunt what to do when we type "grunt" into the terminal. + grunt.registerTask('default', ['express','watch']); + +}; diff --git a/bin/app.js b/bin/app.js new file mode 100755 index 0000000..842707f --- /dev/null +++ b/bin/app.js @@ -0,0 +1,33 @@ +var express = require('express'), + expressValidator = require('express-validator'), + fs = require('fs-extra'), + morgan = require('morgan'), + multer = require('multer'), + cookieParser = require('cookie-parser'), + bodyParser = require('body-parser'), + cookieSession = require('cookie-session'); +var config = require('../config/main'); + +var app = express(); +app.use(morgan('combined')); +app.use(bodyParser.json()); // for parsing application/json +app.use(multer({inMemory: true})); +app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded +app.use(expressValidator()); +app.use(cookieParser()); +app.use(cookieSession({secret: 'app_1'})); +app.use(express.static('../public')); +app.use(express.static('../public/vendor')); +//app.use(express.favicon(__dirname + '/public/images/shortcut-icon.png')); +//app.use(messages()); + +app.set('view engine', 'html'); +app.set('views', __dirname + '/views'); + +// view caching +app.set('view cache', false); + +require('../config/routes')(app); +app.listen(config.webserver_port, function(){ + console.log('Listening on port '+config.webserver_port); +}); diff --git a/config/main.js b/config/main.js new file mode 100755 index 0000000..a3780c3 --- /dev/null +++ b/config/main.js @@ -0,0 +1,13 @@ +module.exports = { + webserver_port : 2015, + sql : { + client: 'mysql', + connection: { + host : 'localhost', + port : 3306, + user : 'test2', + password : 'test2', + database : 'test2' + } + }, +} diff --git a/config/rendering.js b/config/rendering.js new file mode 100755 index 0000000..46c3324 --- /dev/null +++ b/config/rendering.js @@ -0,0 +1,18 @@ +module.exports = { + + // Useful with RESTful APIs. Allows you to either send json response or html + // var rendering = require('./util/rendering'); + // rendering.render(req, res, data); + render: function(req, res, data) { + res.header("Access-Control-Allow-Origin", "*"); + res.header("Access-Control-Allow-Headers", "X-Requested-With"); + + if(/application\/json/.test(req.get('accept'))) { + res.json(data); + } else { + res.render('data/basic', { + data: data + }); + } + } +} diff --git a/config/routes.js b/config/routes.js new file mode 100755 index 0000000..6ba6084 --- /dev/null +++ b/config/routes.js @@ -0,0 +1,5 @@ +var indexController = require('../controllers/index'); + +module.exports = function (app, passport) { + app.get('/', indexController.main); +} diff --git a/controllers/index.js b/controllers/index.js new file mode 100755 index 0000000..71ca5d4 --- /dev/null +++ b/controllers/index.js @@ -0,0 +1,4 @@ +var rendering = require('../config/rendering'); +exports.main = function(req, res) { + res.json('hello world'); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..cd5298c --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "grunt_server_experiment", + "version": "1.0.0", + "description": "", + "main": "Gruntfile.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-watch": "^0.6.1", + "grunt-express-server": "^0.4.19" + }, + "dependencies": { + "body-parser": "^1.10.0", + "cookie-parser": "^1.3.3", + "cookie-session": "^1.1.0", + "express": "^4.10.4", + "express-validator": "^2.7.0", + "fs-extra": "^0.12.0", + "morgan": "^1.5.0", + "multer": "^0.1.6" + } +} -- cgit v1.2.3-70-g09d2