diff --git a/.eslintrc.json b/.eslintrc.json
index 14152dfcb9ae24e77005322efbbfbe811504ae58..bac0de40f23bdc06babf20e5c715f05b3f8b6c41 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -7,6 +7,8 @@
         "import"
     ],
     "rules": {
+        "jsx-a11y/heading-has-content": [ "off" ],
+        "jsx-a11y/anchor-has-content": [ "off" ],
         "indent": [ "error", 4 ],
         "no-unused-vars": [ "error", { "args": "none" }],
         "no-param-reassign": [ "off" ]
diff --git a/gulpfile.babel.js b/gulpfile.babel.js
index acc0e918ad5bea19aad613165a84e547648520a6..e67a5244b4d90816abe3d27d350be349695ea7ad 100644
--- a/gulpfile.babel.js
+++ b/gulpfile.babel.js
@@ -47,16 +47,17 @@ gulp.task('compile', ['lint'], () => {
     .pipe(babel())      // compile only modified files
     // .pipe(cache.cache())        // cache compiled files
     .pipe(gulp.dest('build'));  // move compiled files to build directory
+});
 
+gulp.task('build', ['compile'], () => {
+    var filesToCopy = [ 'config.json', 'package.json' ];
     // copy configuration file to build directory
-    gulp.src('config.json')
+    gulp.src(filesToCopy)
     .pipe(gulp.dest('build'));
 
     createLogDir();
 });
 
-gulp.task('build', ['compile']);
-
 gulp.task('docco', () => {
     gulp.src('./src/**/*.js')
         .pipe(docco())
diff --git a/package.json b/package.json
index a7056dc915f19875538b5f4de96bda8d4fa764d9..d923ed1f1a30bd1b7753d665a08407233a5bb3e0 100644
--- a/package.json
+++ b/package.json
@@ -4,32 +4,37 @@
   "author": "C3SL",
   "description": "Simulador custo aluno-qualidade",
   "private": true,
+  "engines": {
+    "node": ">= 6.8.1"
+  },
+  "engineStrict": true,
   "scripts": {
     "start": "cd build && forever start server.js || node server.js",
     "test": "cd build && mocha"
   },
   "dependencies": {
-    "apicache": "0.0.14",
-    "bcrypt": "^0.8.7",
+    "apicache": "0.7.0",
+    "bcrypt-nodejs": "0.0.3",
     "body-parser": "^1.13.1",
     "chai": "^3.5.0",
     "chai-http": "^3.0.0",
+    "chalk": "^1.1.3",
     "compression": "^1.6.2",
     "cookie-parser": "^1.3.5",
     "cors": "^2.7.1",
     "csv-express": "^1.1.0",
-    "debug": "~2.0.x",
+    "debug": "~2.3.x",
     "dirty-chai": "^1.2.2",
     "express": "^4.13.0",
-    "faker": "^2.1.5",
+    "faker": "^3.1.0",
     "forever": "^0.15.2",
-    "js2xmlparser": "^1.0.0",
+    "js2xmlparser": "^2.0.2",
     "jwt-simple": "^0.5.0",
     "method-override": "^2.3.3",
-    "mocha": "^2.5.3",
+    "mocha": "^3.1.2",
     "monetdb-pool": "0.0.8",
     "mongoose": "^4.6.0",
-    "nconf": "^0.6.x",
+    "nconf": "^0.8.x",
     "passport": "^0.3.2",
     "squel": "^5.4.2",
     "winston": "^2.2.0"
@@ -45,9 +50,9 @@
     "chai-xml": "^0.3.1",
     "docdash": "^0.4.0",
     "eslint": "^3.3.1",
-    "eslint-config-airbnb": "^10.0.1",
-    "eslint-plugin-import": "^1.13.0",
-    "eslint-plugin-jsx-a11y": "^2.1.0",
+    "eslint-config-airbnb": "^13.0.0",
+    "eslint-plugin-import": "^2.2.0",
+    "eslint-plugin-jsx-a11y": "^2.2.3",
     "eslint-plugin-react": "^6.1.1",
     "gulp": "^3.9.1",
     "gulp-babel": "^6.1.2",
@@ -55,9 +60,9 @@
     "gulp-docco": "0.0.4",
     "gulp-eslint": "^3.0.1",
     "gulp-file-cache": "0.0.1",
-    "gulp-function": "^1.3.6",
+    "gulp-function": "^2.2.0",
     "gulp-istanbul": "^1.1.1",
-    "gulp-jsdoc3": "^0.3.0",
+    "gulp-jsdoc3": "^1.0.1",
     "gulp-mocha": "^3.0.1",
     "gulp-nodemon": "^2.1.0",
     "gulp-plumber": "^1.1.0",
diff --git a/src/libs/middlewares/checkVersion.js b/src/libs/middlewares/checkVersion.js
new file mode 100644
index 0000000000000000000000000000000000000000..c3187adba9081e2a992d09df36e839efc23dfca0
--- /dev/null
+++ b/src/libs/middlewares/checkVersion.js
@@ -0,0 +1,22 @@
+const curPath = process.cwd();
+const libs = `${process.cwd()}/libs`;
+const log = require(`${libs}/log`)(module);
+const chalk = require('chalk');
+const packageConf = require(`${curPath}/package.json`);
+
+module.exports = () => {
+    // Parse version number from strings such as 'v4.2.0' or `>=4.0.0'
+    function parseVersionNumber(versionString) {
+        return parseFloat(versionString.replace(/[^\d\.]/g, ''));
+    }
+    // Ensure minimum supported node version is used
+    const minNodeVersion = parseVersionNumber(packageConf.engines.node);
+    const currentNodeVersion = parseVersionNumber(process.version);
+    if (minNodeVersion > currentNodeVersion) {
+        log.error(chalk.red(`You must upgrade node to >=${minNodeVersion}.x to use simcaq-node!`));
+        return false;
+    } else {
+        log.info('Node version should work!');
+        return true;
+    }
+};
diff --git a/src/libs/middlewares/response.js b/src/libs/middlewares/response.js
index 580c16f5bd7470d20c622565954234f873f56b54..cb2f4ca3a14bf9b2240ce1ebeeec3e89c05746c4 100644
--- a/src/libs/middlewares/response.js
+++ b/src/libs/middlewares/response.js
@@ -12,7 +12,7 @@ function response(value) {
             res.attachment(`${value}.csv`);
             res.csv(req.result);
         } else if (req.query.format === 'xml') {
-            res.send(xml('result', JSON.stringify({ [value]: req.result })));
+            res.send(xml.parse('result', { [value]: req.result }));
         } else {
             res.json({ result: req.result });
         }
diff --git a/src/libs/models/user.js b/src/libs/models/user.js
index 8c4f92a204ef9c3b410fb656c16c4af9ad6c7152..83315b8238e97ce11daf02a8234824ff660f3d7b 100644
--- a/src/libs/models/user.js
+++ b/src/libs/models/user.js
@@ -1,5 +1,5 @@
 const mongoose = require('mongoose');
-const bcrypt = require('bcrypt');
+const bcrypt = require('bcrypt-nodejs');
 const libs = `${process.cwd()}/libs`;
 const log = require(`${libs}/log`)(module);
 const Schema = mongoose.Schema;
diff --git a/src/server.js b/src/server.js
index 2ebb897dace886c2352ad63737f1634eacc40b38..ccc5e884702641fca04e0fc0480860a4b72300ef 100644
--- a/src/server.js
+++ b/src/server.js
@@ -8,6 +8,13 @@ const log = require(`${libs}/log`)(module);
 
 const app = require(`${libs}/app`);
 
+const compatVersion = require(`${libs}/middlewares/checkVersion`);
+
+// Check if Node version is compatible
+if (!compatVersion()) {
+    process.exit(1);
+}
+
 // Set default port: first environment variable PORT, then configuration and last 3000
 app.set('port', process.env.PORT || config.port || 3000);
 process.env.NODE_ENV = process.env.NODE_ENV || 'development';