diff --git a/app/adapters/application.js b/app/adapters/application.js
index 14f50f8a62604620255fc7d10e1c09cadcfe08e4..fa01ec20b3653103685c90f10a5d0732fff12762 100644
--- a/app/adapters/application.js
+++ b/app/adapters/application.js
@@ -11,6 +11,21 @@ export default class ApplicationAdapter extends JSONAPIAdapter {
     return `${super.buildURL(...args)}/`;
   }
 
+  pathForType(modelName) {
+    let ret = super.pathForType(modelName);
+
+    // `nodes` is polymorphic endpoint
+    // with POST /api/nodes/ we can create a Folder
+    // or a Document
+    if (modelName == 'folder') {
+      return 'nodes';
+    } else if (modeName == 'document') {
+      return 'nodes';
+    }
+
+    return ret;
+  }
+
   @computed('session.data.authenticated.token', 'session.isAuthenticated')
   get headers() {
     let _headers = {},
diff --git a/app/adapters/node.js b/app/adapters/node.js
index 6dffdad523d76d120c4333fe6477231c28a8967a..01326e26a7878cf0155b324eb28dcc175c6a9293 100644
--- a/app/adapters/node.js
+++ b/app/adapters/node.js
@@ -9,4 +9,5 @@ export default class NodeAdapter extends ApplicationAdapter {
 
     return ret;
   }
+
 }
diff --git a/app/components/modal/new_folder.js b/app/components/modal/new_folder.js
index f61154005b96a5a8bcfecdb8763ae7aaecd265c8..d1d49fdffadb9055c20c757d8410abaefc43a549 100644
--- a/app/components/modal/new_folder.js
+++ b/app/components/modal/new_folder.js
@@ -9,17 +9,23 @@ import { Modal } from 'bootstrap';
 export default class NewFolderComponent extends Component {
   @tracked title = '';
   @service store;
+  @service currentUser;
 
   @action
   onSubmit() {
-    let new_folder;
 
-    new_folder = this.store.createRecord('node');
-    new_folder.title = this.title;
-    new_folder.save();
+    this.currentUser.user.home_folder.then((home_folder) => {
+      let new_folder;
+
+      new_folder = this.store.createRecord('folder');
+      new_folder.title = this.title;
+      new_folder.parent = home_folder;
+      new_folder.save();
+
+      this.args.onClose();
+      this.title = '';
+    });
 
-    this.args.onClose();
-    this.title = '';
   }
 
   @action
diff --git a/app/models/node.js b/app/models/node.js
index af9489cb5d8c1433682a867f14ed0640f14feb0f..c8dc0446216ef66c37a1ad765f4f3dc44f6c4f69 100644
--- a/app/models/node.js
+++ b/app/models/node.js
@@ -3,7 +3,7 @@ import Model, { attr, hasMany, belongsTo } from '@ember-data/model';
 export default class NodeModel extends Model {
   @attr title;
   @attr model;
-  @belongsTo('folder', { inverse: null }) parent;
+  @belongsTo('node', { inverse: 'descendants', polymorphic: true }) parent;
   @hasMany('node', { polymorphic: true }) descendants;
 
   get is_folder() {