diff --git a/src/server.js b/src/server.js
new file mode 100644
index 0000000..da541ce
--- /dev/null
+++ b/src/server.js
@@ -0,0 +1,58 @@
+(function () {
+  'use strict';
+  
+  const express = require('express');
+  const app = express();
+  const config = require('./config/config.js').gateway;
+  const bodyParser = require('body-parser');
+  const cors = require('cors');
+  const socketIo = require('./controllers/websocket.js');
+  const logger = require('./config/logger.js');
+
+  // Apply middlewares
+  app.use(cors());
+  app.use(bodyParser.json());
+
+  // Load routes
+  require('./routes/core_proxy.js')(app);
+
+  app.get('/', function(req, res) {
+    res.send('Hello world');
+  });
+
+  const startServer = () => {
+
+    // if is running just return it
+    if(app.server) {
+      return app.server;
+    }
+
+    const server =  app.listen(config.port, function() {
+      logger.info(`Express is listening to http://localhost:${config.port}`);
+
+      // once server is ready setup WebSocket
+      socketIo.create(server);
+
+      // start redis
+      require('./controllers/redis.js');
+    });
+    app.server = server;
+    return server;
+  };
+
+  const stopServer = () => {
+    if(app.server) {
+      app.server.close();
+    }
+  }
+
+  if(!module.parent) {
+    startServer();
+  }
+
+  module.exports = {
+    app: app,
+    start: startServer,
+    stop: stopServer
+  };
+})();
\ No newline at end of file
