diff --git a/README.md b/README.md
index 27b17ea1737734ccce1148e812e29ea562e07336..2881aa3d6b9afb99f19524670ffa6c92a1040cdb 100644
--- a/README.md
+++ b/README.md
@@ -17,4 +17,4 @@ show collections;
 db.orders.find();
 ```
 
-
+Open api at http://localhost:8080/
diff --git a/api/.gitignore b/api/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..25c8fdbaba62c31aacfa2307975b06fbfd017485
--- /dev/null
+++ b/api/.gitignore
@@ -0,0 +1,2 @@
+node_modules
+package-lock.json
\ No newline at end of file
diff --git a/api/Dockerfile b/api/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8e06e5834352a245711c3d0d4769a139a7230abe
--- /dev/null
+++ b/api/Dockerfile
@@ -0,0 +1,5 @@
+FROM node:11
+WORKDIR /home/nodejs/app
+COPY . .
+RUN npm install --production
+CMD ["npm", "start"]
diff --git a/api/app/queries.js b/api/app/queries.js
new file mode 100644
index 0000000000000000000000000000000000000000..205b4ea6596935490addecf908e9b190df004d75
--- /dev/null
+++ b/api/app/queries.js
@@ -0,0 +1,27 @@
+const u = require('./utils');
+const MongoClient = require('mongodb').MongoClient;
+
+const url = 'mongodb://mongo-orders:27017';
+const dbName = 'order';
+
+let db;
+MongoClient.connect(url, function(err, client) {
+    if (err) {
+        console.log(err);
+    }
+    else {
+        console.log('Connected successfully to server');
+        db = client.db(dbName);
+    }
+});
+
+exports.byCustomerPseudo = (req, res) => {
+    u.logReq(req);
+    db.collection('orders').find({ 'customer.pseudo': { $eq: req.params.pseudo } }).toArray((err, docs) => {
+        if (err) {
+            console.log(err);
+        }
+        console.log(docs);
+        res.send(docs);
+    });
+}
diff --git a/api/app/router.js b/api/app/router.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3fc2d48daff59456ac7df59da4cddc6d4a0ded1
--- /dev/null
+++ b/api/app/router.js
@@ -0,0 +1,14 @@
+const u = require('./utils');
+const queries = require('./queries');
+const router = require('express').Router();
+
+router.get('/hello', (req, res) => {
+    u.logReq(req);
+    res.send({ message: 'hello' });
+});
+
+router.get('/by-customer-pseudo/:pseudo', queries.byCustomerPseudo);
+
+router.use((_, res) => res.status(404).send({ message: 'Route not found' }));
+
+module.exports = router;
diff --git a/api/app/utils.js b/api/app/utils.js
new file mode 100644
index 0000000000000000000000000000000000000000..5332ef77c3760969e129060ea969fe22e1e14b73
--- /dev/null
+++ b/api/app/utils.js
@@ -0,0 +1,7 @@
+exports.logReq = (req) => {
+    console.log('METHOD:', req.method);
+    console.log('ENDPOINT:', req.originalUrl);
+    console.log('HEADERS:', req.headers);
+    console.log('PARAMS:', req.params);
+    console.log('BODY:', req.body);
+}
diff --git a/api/package.json b/api/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9da8a9a086732929a2c12a78264063bab879e17
--- /dev/null
+++ b/api/package.json
@@ -0,0 +1,30 @@
+{
+  "name": "api",
+  "version": "0.1.0",
+  "description": "Node.js api interacting with MongoDB",
+  "main": "server.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://githepia.hesge.ch/joel.cavat/mongodb-orders"
+  },
+  "keywords": [
+    "mongo",
+    "mongodb",
+    "node",
+    "nodejs",
+    "api"
+  ],
+  "author": "Joël Cavat, Steven Liatti",
+  "license": "ISC",
+  "dependencies": {
+    "body-parser": "^1.19.0",
+    "express": "^4.17.0",
+    "mongodb": "^3.2.5"
+  },
+  "devDependencies": {
+    "nodemon": "^1.19.0"
+  }
+}
diff --git a/api/server.js b/api/server.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ce992de8a87e984fe44a37a2e4346125f53970c
--- /dev/null
+++ b/api/server.js
@@ -0,0 +1,24 @@
+// modules
+const express = require('express');
+const app = express();
+const bodyParser = require('body-parser');
+const router = require('./app/router');
+
+// get all data/stuff of the body (POST) parameters
+app.use(bodyParser.json()); // parse application/json
+app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
+app.use(bodyParser.urlencoded({ extended: true })); // parse application/x-www-form-urlencoded
+app.use(function (req, res, next) {
+    res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
+    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
+    res.header('Access-Control-Allow-Origin', '*');
+    next();
+});
+
+// routes
+app.use('/', router);
+
+// start api
+const port = process.env.PORT || 8080; // set our port
+app.listen(port);
+console.log('Api listening on port ' + port);
diff --git a/docker-compose.yml b/docker-compose.yml
index 3094ff78db262fb65f7c25359ae4b500141e57ae..fca59398392aa3d9c14663c785df6d4342fce5ea 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,10 +1,16 @@
 version: "2"
 services:
     mongo-orders:
-          image: mongo
-          ports:
+        image: mongo
+        ports:
             - "27017:27017"
+        depends_on:
+            - mongo-seed
     mongo-seed:
-        build: .
-        links:
+        build: ./mongodb
+    api:
+        build: ./api
+        ports:
+            - "8080:8080"
+        depends_on:
             - mongo-orders
diff --git a/Dockerfile b/mongodb/Dockerfile
similarity index 92%
rename from Dockerfile
rename to mongodb/Dockerfile
index e4acc536afb35bf0d03c43ca38e5a0c77b4e45a6..b75eedb180eced096dedeb7a880dcd4edd64dfd8 100644
--- a/Dockerfile
+++ b/mongodb/Dockerfile
@@ -1,3 +1,3 @@
 FROM mongo
 COPY ./data/orders.json /orders.json
-CMD mongoimport --host mongo-orders --db order --collection orders --type json --file orders.json --jsonArray && mongo --host mongo-orders order --eval 'db.orders.find( { "customer.id.floatApprox": { $exists: true } } ).forEach( tr => db.orders.update({_id: tr._id},{$set:{"customer.id": tr.customer.id.floatApprox}}  ) )' && mongo --host mongo-orders order --eval 'db.orders.find().forEach( tr => db.orders.update({_id: tr._id}, {$set:{"shipping.when": new Date(tr.shipping.when)}}))'
+CMD mongoimport --host mongo-orders --db order --collection orders --type json --file orders.json --jsonArray && mongo --host mongo-orders order --eval 'db.orders.find( { "customer.id.floatApprox": { $exists: true } } ).forEach( tr => db.orders.update({_id: tr._id},{$set:{"customer.id": tr.customer.id.floatApprox}}  ) )' && mongo --host mongo-orders order --eval 'db.orders.find().forEach( tr => db.orders.update({_id: tr._id}, {$set:{"shipping.when": new Date(tr.shipping.when)}}))'
\ No newline at end of file
diff --git a/data/orders.json b/mongodb/data/orders.json
similarity index 100%
rename from data/orders.json
rename to mongodb/data/orders.json