diff --git a/ExpressAPI/src/express/API.ts b/ExpressAPI/src/express/API.ts
new file mode 100644
index 0000000000000000000000000000000000000000..be90d0238b450065ad8199623846832dab8c84b0
--- /dev/null
+++ b/ExpressAPI/src/express/API.ts
@@ -0,0 +1,50 @@
+import { Express }           from 'express-serve-static-core';
+import cors                  from 'cors';
+import morganMiddleware      from '../logging/MorganMiddleware';
+import { AddressInfo }       from 'net';
+import http                  from 'http';
+import helmet                from 'helmet';
+import express               from 'express';
+import WorkerTask            from '../process/WorkerTask';
+import multer                from 'multer';
+import SessionMiddleware     from '../middlewares/SessionMiddleware';
+import Config                from '../config/Config';
+import logger                from '../shared/logging/WinstonLogger';
+import ParamsCallbackManager from '../middlewares/ParamsCallbackManager';
+import ApiRoutesManager      from '../routes/ApiRoutesManager';
+
+
+class API implements WorkerTask {
+    private readonly backend: Express;
+    private server: http.Server;
+
+    constructor() {
+        this.backend = express();
+
+        this.backend.use(multer({
+                                    limits: { fieldSize: 100 * 1024 * 1024 }
+                                }).none()); //Used for extract params from body with format "form-data", The none is for say that we do not wait a file in params
+        this.backend.use(morganMiddleware); //Log API accesses
+        this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/
+        this.backend.use(cors()); //Allow CORS requests
+
+        ParamsCallbackManager.register(this.backend);
+
+        this.backend.use(SessionMiddleware.register());
+
+        ApiRoutesManager.registerOnBackend(this.backend);
+    }
+
+    run() {
+        this.server = this.backend.listen(Config.api.port, '0.0.0.0', () => {
+            const {
+                      port,
+                      address
+                  } = this.server.address() as AddressInfo;
+            logger.info(`Server started on http://${ address }:${ port }`);
+        });
+    }
+}
+
+
+export default API;