summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2014-12-04 23:16:17 -0800
committeryo mama <pepper@scannerjammer.com>2014-12-04 23:16:17 -0800
commite0916ce4ce75ad3d21a492b8739caa468f08f54d (patch)
tree524734739a3dfb44bc73ff6a6b2944b90ad71daa
first commit
-rw-r--r--.bowerrc3
-rw-r--r--.gitignore2
-rw-r--r--Gruntfile.js93
-rwxr-xr-xbin/app.js33
-rwxr-xr-xconfig/main.js13
-rwxr-xr-xconfig/rendering.js18
-rwxr-xr-xconfig/routes.js5
-rwxr-xr-xcontrollers/index.js4
-rw-r--r--package.json26
9 files changed, 197 insertions, 0 deletions
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"
+ }
+}