diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..de51f68a2cda6df56ca45d06ade37f126bfc8e31
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,45 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+/out-tsc
+# Only exists if Bazel was run
+/bazel-out
+
+# dependencies
+/node_modules
+
+# profiling files
+chrome-profiler-events*.json
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+.history/*
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage
+/libpeerconnection.log
+npm-debug.log
+yarn-error.log
+testem.log
+/typings
+
+# System Files
+.DS_Store
+Thumbs.db
diff --git a/client/src/app/instance/documentation/components/dataset-by-family.component.html b/client/src/app/instance/documentation/components/dataset-by-family.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..9ec4e190718bba199f9c9414039e1c9be1d0e03e
--- /dev/null
+++ b/client/src/app/instance/documentation/components/dataset-by-family.component.html
@@ -0,0 +1,51 @@
+<div *ngIf="datasetFamilyList.length === 1">
+    <div class="border rounded my-2">
+        <p *ngIf="(datasetList | datasetListByFamily:datasetFamilyList[0].id).length === 1"
+           class="border-bottom bg-light text-primary py-4 pl-4">
+            Dataset
+        </p>
+        <p *ngIf="(datasetList | datasetListByFamily:datasetFamilyList[0].id).length > 1"
+           class="border-bottom bg-light text-primary py-4 pl-4">
+            List of datasets
+        </p>
+        <ul class="p-0">
+            <li *ngFor="let dataset of (datasetList | datasetListByFamily:datasetFamilyList[0].id); last as isLast"
+                class="list-unstyled px-3 pt-3 pb-0">
+                <app-dataset-card-doc
+                    [dataset]="dataset"
+                    [survey]="surveyList | surveyByName:dataset.survey_name"
+                    [instanceSelected]="instanceSelected">
+                </app-dataset-card-doc>
+                <hr *ngIf="!isLast">
+            </li>
+        </ul>
+    </div>
+</div>
+
+<accordion *ngIf="datasetFamilyList.length > 1" [isAnimated]="true">
+    <ng-container *ngFor="let family of datasetFamilyList">
+        <accordion-group #ag *ngIf="(datasetList | datasetListByFamily:family.id).length > 0" [panelClass]="'custom-accordion'"
+            [isOpen]="true" class="my-2">
+            <button class="btn btn-link btn-block clearfix" accordion-heading>
+                <span class="pull-left float-left">
+                    {{ family.label }}
+                    &nbsp;
+                    <span *ngIf="ag.isOpen">
+                        <span class="fas fa-chevron-up"></span>
+                    </span>
+                    <span *ngIf="!ag.isOpen">
+                        <span class="fas fa-chevron-down"></span>
+                    </span>
+                </span>
+            </button>
+            <div *ngFor="let dataset of (datasetList | datasetListByFamily:family.id); last as isLast">
+                <app-dataset-card-doc
+                    [dataset]="dataset"
+                    [survey]="surveyList | surveyByName:dataset.survey_name"
+                    [instanceSelected]="instanceSelected">
+                </app-dataset-card-doc>
+                <hr *ngIf="!isLast">
+            </div>
+        </accordion-group>
+    </ng-container>
+</accordion>
diff --git a/client/src/app/instance/documentation/components/dataset-by-family.component.scss b/client/src/app/instance/documentation/components/dataset-by-family.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..537c2ca10228b7aa40a424334498ba2dcfcd0464
--- /dev/null
+++ b/client/src/app/instance/documentation/components/dataset-by-family.component.scss
@@ -0,0 +1,32 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+.tabset .tab-pane, .tabset .tab-pane .family-empty {
+    min-height: 300px;
+}
+
+.tabset .tab-pane {
+    padding-top: 13px;
+}
+
+.tabset .active.tab-pane {
+    border: 1px solid #dee2e6;
+    border-top: none;
+    border-bottom-left-radius: .25rem;
+    border-bottom-right-radius: .25rem;
+}
+
+.dataset-card {
+    width: 95%;
+    border-bottom: 1px solid #dee2e6;
+}
+
+.dataset-card:last-child {
+    border: none;
+}
diff --git a/client/src/app/instance/documentation/components/dataset-by-family.component.ts b/client/src/app/instance/documentation/components/dataset-by-family.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8f09f1df80e97bb388099d481a05eb53d2c34da7
--- /dev/null
+++ b/client/src/app/instance/documentation/components/dataset-by-family.component.ts
@@ -0,0 +1,29 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
+
+import { Dataset, DatasetFamily, Survey } from 'src/app/metamodel/models';
+
+@Component({
+    selector: 'app-dataset-by-family',
+    templateUrl: 'dataset-by-family.component.html',
+    styleUrls: ['dataset-by-family.component.scss'],
+    changeDetection: ChangeDetectionStrategy.OnPush
+})
+/**
+ * @class
+ * @classdesc Documentation dataset by family component.
+ */
+export class DatasetByFamilyComponent {
+    @Input() datasetList: Dataset[];
+    @Input() datasetFamilyList: DatasetFamily[];
+    @Input() surveyList: Survey[];
+    @Input() instanceSelected: string;
+}
diff --git a/client/src/app/instance/documentation/components/dataset-card-doc.component.html b/client/src/app/instance/documentation/components/dataset-card-doc.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef6dda4c88a7d12e1eb56d5308aca6ba6b904995
--- /dev/null
+++ b/client/src/app/instance/documentation/components/dataset-card-doc.component.html
@@ -0,0 +1,33 @@
+<div class="card border-0">
+    <div class="card-body py-2">
+        <div class="row">
+            <div class="col">
+                <div class="row">
+                    <p class="lead m-0 d-inline">
+                        {{ dataset.label }}
+                    </p>
+                </div>
+                <div class="row">
+                    <p class="my-3">{{ dataset.description }}</p>
+                </div>
+                <div class="row">
+                    <button class="btn btn-link p-0"
+                        popover="{{ survey.description }}"
+                        popoverTitle="{{ survey.label }}"
+                        placement="bottom"
+                        triggers="mouseenter:mouseleave">
+                        <small>
+                            More about {{ survey.label }} survey <span class="fas fa-question-circle"></span>
+                        </small>
+                    </button>
+                </div>
+            </div>
+            <div class="col-auto">
+                <button (click)="selectDataset(dataset.name)"
+                    class="btn btn-outline-secondary">
+                    Select
+                </button>
+            </div>
+        </div>
+    </div>
+</div>
diff --git a/client/src/app/instance/documentation/components/dataset-card-doc.component.ts b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..adcfcf400fa4169fb562d3f332f39c049352b3ec
--- /dev/null
+++ b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts
@@ -0,0 +1,35 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
+import { Router } from '@angular/router';
+
+import { Survey, Dataset } from 'src/app/metamodel/models';
+
+@Component({
+    selector: 'app-dataset-card-doc',
+    templateUrl: 'dataset-card-doc.component.html',
+    changeDetection: ChangeDetectionStrategy.OnPush
+})
+/**
+ * @class
+ * @classdesc Documentation dataset card component.
+ */
+export class DatasetCardDocComponent {
+    @Input() survey: Survey;
+    @Input() dataset: Dataset;
+    @Input() instanceSelected: string;
+
+    constructor(private router: Router) { }
+
+    selectDataset(datasetName: string) {
+        this.router.routeReuseStrategy.shouldReuseRoute = () => false;
+        this.router.navigate([`/instance/${this.instanceSelected}/documentation/${datasetName}`]);
+    }
+}
diff --git a/client/src/app/instance/documentation/components/index.ts b/client/src/app/instance/documentation/components/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a4c97d3abd4d83a23b0ce9ee7365150ae024cc47
--- /dev/null
+++ b/client/src/app/instance/documentation/components/index.ts
@@ -0,0 +1,9 @@
+import { DatasetByFamilyComponent } from './dataset-by-family.component';
+import { DatasetCardDocComponent } from './dataset-card-doc.component';
+import { OutputListComponent } from "./output-list.component";
+
+export const dummiesComponents = [
+    DatasetByFamilyComponent,
+    DatasetCardDocComponent,
+    OutputListComponent
+];
diff --git a/client/src/app/instance/documentation/components/output-list.component.html b/client/src/app/instance/documentation/components/output-list.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..14fa0ec4fa11969501ef9c13e0b601c44864abba
--- /dev/null
+++ b/client/src/app/instance/documentation/components/output-list.component.html
@@ -0,0 +1,12 @@
+<h4>Available outputs for {{ datasetSelected }}</h4>
+
+<table id="table" class="attributes-table p-0">
+    <tr>
+        <th>id</th>
+        <th>attribute</th>
+    </tr>
+    <tr *ngFor="let attribute of attributeList">
+        <td>{{ attribute.id }}</td>
+        <td>{{ attribute.name }}</td>
+    </tr>
+</table>
diff --git a/client/src/app/instance/documentation/components/output-list.component.ts b/client/src/app/instance/documentation/components/output-list.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9d13b94d46d6c91fe403f2c21acf7474a4bc5604
--- /dev/null
+++ b/client/src/app/instance/documentation/components/output-list.component.ts
@@ -0,0 +1,27 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
+
+import { Attribute } from 'src/app/metamodel/models';
+
+@Component({
+    selector: 'app-output-list',
+    templateUrl: 'output-list.component.html',
+    styleUrls: ['../documentation.component.scss'],
+    changeDetection: ChangeDetectionStrategy.OnPush
+})
+/**
+ * @class
+ * @classdesc Documentation output list component.
+ */
+export class OutputListComponent {
+    @Input() datasetSelected: string;
+    @Input() attributeList: Attribute[];
+}
diff --git a/client/src/app/instance/documentation/containers/dataset-list.component.html b/client/src/app/instance/documentation/containers/dataset-list.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..91d2e14900928758b0ebb8e89f93bc69e3d3bf5d
--- /dev/null
+++ b/client/src/app/instance/documentation/containers/dataset-list.component.html
@@ -0,0 +1,29 @@
+<app-spinner *ngIf="(datasetFamilyListIsLoading | async)
+    || (datasetListIsLoading | async)
+    || (surveyListIsLoading | async)">
+</app-spinner>
+
+<div *ngIf="(datasetFamilyListIsLoaded | async)
+        && (datasetListIsLoaded | async)
+        && (surveyListIsLoaded | async)" class="container">
+    <div class="row mt-4">
+        <ng-container *ngIf="(datasetList | async).length === 0">
+            <div class="col-12 lead text-center">
+                Oops! No dataset available...
+                <span *ngIf="!(isAuthenticated | async)">
+                    Try to sign in to access to protected datasets.
+                </span>
+            </div>
+        </ng-container>
+        <ng-container *ngIf="(datasetList | async).length > 0">
+            <div class="col-12">
+                <app-dataset-by-family
+                    [datasetList]="datasetList | async"
+                    [datasetFamilyList]="datasetFamilyList | async"
+                    [surveyList]="surveyList | async"
+                    [instanceSelected]="instanceSelected | async">
+                </app-dataset-by-family>
+            </div>
+        </ng-container>
+    </div>
+</div>
\ No newline at end of file
diff --git a/client/src/app/instance/documentation/containers/dataset-list.component.ts b/client/src/app/instance/documentation/containers/dataset-list.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..88997f508376a8db320243e444b2a9225683c8e2
--- /dev/null
+++ b/client/src/app/instance/documentation/containers/dataset-list.component.ts
@@ -0,0 +1,65 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { Component, OnInit } from '@angular/core';
+
+import { Store } from '@ngrx/store';
+import { Observable } from 'rxjs';
+
+import * as datasetActions from 'src/app/metamodel/actions/dataset.actions';
+import * as datasetFamilySelector from 'src/app/metamodel/selectors/dataset-family.selector';
+import * as datasetSelector from 'src/app/metamodel/selectors/dataset.selector';
+import { Dataset, DatasetFamily, Survey } from 'src/app/metamodel/models';
+import { environment } from 'src/environments/environment';
+import * as authSelector from "../../../auth/auth.selector";
+import * as instanceSelector from "../../../metamodel/selectors/instance.selector";
+import * as surveySelector from "../../../metamodel/selectors/survey.selector";
+
+@Component({
+    selector: 'app-dataset-list',
+    templateUrl: 'dataset-list.component.html',
+    styleUrls: ['../documentation.component.scss']
+})
+/**
+ * @class
+ * @classdesc Documentation dataset list container.
+ *
+ * @implements OnInit
+ */
+export class DatasetListComponent implements OnInit {
+    public instanceSelected: Observable<string>;
+    public isAuthenticated: Observable<boolean>;
+    public datasetFamilyListIsLoading: Observable<boolean>;
+    public datasetFamilyListIsLoaded: Observable<boolean>;
+    public datasetFamilyList: Observable<DatasetFamily[]>;
+    public surveyListIsLoading: Observable<boolean>;
+    public surveyListIsLoaded: Observable<boolean>;
+    public surveyList: Observable<Survey[]>;
+    public datasetListIsLoading: Observable<boolean>;
+    public datasetListIsLoaded: Observable<boolean>;
+    public datasetList: Observable<Dataset[]>;
+
+    constructor(private store: Store<{ }>) {
+        this.instanceSelected = store.select(instanceSelector.selectInstanceNameByRoute);
+        this.isAuthenticated = store.select(authSelector.selectIsAuthenticated);
+        this.datasetFamilyListIsLoading = store.select(datasetFamilySelector.selectDatasetFamilyListIsLoading);
+        this.datasetFamilyListIsLoaded = store.select(datasetFamilySelector.selectDatasetFamilyListIsLoaded);
+        this.datasetFamilyList = store.select(datasetFamilySelector.selectAllDatasetFamilies);
+        this.surveyListIsLoading = store.select(surveySelector.selectSurveyListIsLoading);
+        this.surveyListIsLoaded = store.select(surveySelector.selectSurveyListIsLoaded);
+        this.surveyList = store.select(surveySelector.selectAllSurveys);
+        this.datasetListIsLoading = store.select(datasetSelector.selectDatasetListIsLoading);
+        this.datasetListIsLoaded = store.select(datasetSelector.selectDatasetListIsLoaded);
+        this.datasetList = store.select(datasetSelector.selectAllDatasets);
+    }
+
+    ngOnInit() {
+        this.store.dispatch(datasetActions.loadDatasetList());
+    }
+}
diff --git a/client/src/app/instance/documentation/documentation.component.html b/client/src/app/instance/documentation/containers/documentation.component.html
similarity index 78%
rename from client/src/app/instance/documentation/documentation.component.html
rename to client/src/app/instance/documentation/containers/documentation.component.html
index a4af4e81b2d3d9add01b31a47ad4b4944f95c267..95e84e96074cd5134d731c5fbaa6746f50b07ee3 100644
--- a/client/src/app/instance/documentation/documentation.component.html
+++ b/client/src/app/instance/documentation/containers/documentation.component.html
@@ -1,16 +1,18 @@
 <div class="container">
+    <app-spinner *ngIf="attributeListIsLoading | async"></app-spinner>
+
     <div class="jumbotron">
         <div class="row align-items-center">
             <div class="col-md-12 order-md-1 text-justify text-md-left pr-md-5">
                 <h2 class="mb-3">Export server documentation</h2>
-    
+
                 <h4>URL construction</h4>
                 <p>
                     To request the server, you need to construct a correct URL. Just below you can find the URL schema and a
                     description of mandatory parameters:
                 </p>
                 <code>{{ getUrlServer() }}/search/dataset?a=id_attribute&c=id_attribute::operator::value</code>
-    
+
                 <ul>
                     <li>
                         <code>dataset</code>: dataset in which to search. See datasets section for available datasets.
@@ -20,51 +22,17 @@
                     </li>
                     <blockquote>a=1;2;3</blockquote>
                     <li>
-                        <code>c</code>: criteria list separeted with semicolon. A criterion is defined by an id_attribute,
+                        <code>c</code>: criteria list separated with semicolon. A criterion is defined by an id_attribute,
                         an operator and a value. See operators section for available operators.
                     </li>
                     <blockquote>c=3::eq::ping;2::eq::pong</blockquote>
                 </ul>
-    
-                <h4>Available parameters</h4>
-    
-                <h5>Datasets</h5>
-                <div *ngIf="datasetListIsLoading | async">
-                    <span class="fas fa-circle-notch fa-spin fa-3x"></span>
-                    <span class="sr-only">Loading...</span>
-                </div>
-                <table *ngIf="datasetListIsLoaded | async" id="table">
-                    <tr>
-                        <th>Dataset</th>
-                        <th>Description</th>
-                    </tr>
-                    <tr *ngFor="let dataset of datasetList | async">
-                        <td>{{ dataset.name }}</td>
-                        <td>{{ dataset.description }}</td>
-                    </tr>
-                </table>
-    
-                <!-- <h5>Outputs</h5>
-                <div *ngIf="attributeListsIsLoading | async">
-                    <span class="fas fa-circle-notch fa-spin fa-3x"></span>
-                    <span class="sr-only">Loading...</span>
-                </div>
-                <div *ngIf="attributeListsIsLoaded | async" class="row">
-                    <div *ngFor="let dataset of datasetList | async" class="col-auto mb-5">
-                        <h6>{{ dataset.label }} output list</h6>
-                            <table id="table" class="attributes-table p-0">
-                                <tr>
-                                    <th>id</th>
-                                    <th>attribute</th>
-                                </tr>
-                                <tr *ngFor="let attribute of getAttributeList(dataset.name, attributeList | async)">
-                                    <td>{{ attribute.id }}</td>
-                                    <td>{{ attribute.name }}</td>
-                                </tr>
-                            </table>
-                    </div>
-                </div> -->
-                
+
+                <app-output-list
+                        [datasetSelected]="datasetSelected | async"
+                        [attributeList]="attributeList | async">
+                </app-output-list>
+
                 <h5>Operators</h5>
                 <table id="table">
                     <tr>
@@ -158,7 +126,7 @@
                         <td><code>c=1::js::PrimaryHDU,ID|eq|45</code></td>
                     </tr>
                 </table>
-    
+
                 <h4>Examples</h4>
 
                 We supposed to have the dataset ping with following attributes:
@@ -200,4 +168,8 @@
             </div>
         </div>
     </div>
+
+    <a routerLink='/instance/{{ instanceSelected | async }}/documentation' class="btn btn-outline-secondary mt-3">
+        <span class="fas fa-arrow-left"></span> Return to previous page
+    </a>
 </div>
diff --git a/client/src/app/instance/documentation/documentation.component.ts b/client/src/app/instance/documentation/containers/documentation.component.ts
similarity index 51%
rename from client/src/app/instance/documentation/documentation.component.ts
rename to client/src/app/instance/documentation/containers/documentation.component.ts
index ef1e591e1cf2cc8e9387046451201a2352d697d0..49d8b251223ae12942034bb37a68211a5f4318e7 100644
--- a/client/src/app/instance/documentation/documentation.component.ts
+++ b/client/src/app/instance/documentation/containers/documentation.component.ts
@@ -12,15 +12,17 @@ import { Component, OnInit } from '@angular/core';
 import { Store } from '@ngrx/store';
 import { Observable } from 'rxjs';
 
-import * as datasetActions from 'src/app/metamodel/actions/dataset.actions';
+import * as attributeActions from 'src/app/metamodel/actions/attribute.actions';
 import * as datasetSelector from 'src/app/metamodel/selectors/dataset.selector';
-import { Dataset } from 'src/app/metamodel/models';
 import { AppConfigService } from 'src/app/app-config.service';
+import { Attribute } from 'src/app/metamodel/models';
+import * as instanceSelector from "../../../metamodel/selectors/instance.selector";
+import * as attributeSelector from "../../../metamodel/selectors/attribute.selector";
 
 @Component({
     selector: 'app-documentation',
     templateUrl: 'documentation.component.html',
-    styleUrls: ['documentation.component.scss']
+    styleUrls: ['../documentation.component.scss']
 })
 /**
  * @class
@@ -29,18 +31,22 @@ import { AppConfigService } from 'src/app/app-config.service';
  * @implements OnInit
  */
 export class DocumentationComponent implements OnInit {
-    public datasetListIsLoading: Observable<boolean>;
-    public datasetListIsLoaded: Observable<boolean>;
-    public datasetList: Observable<Dataset[]>;
+    public instanceSelected: Observable<string>;
+    public datasetSelected: Observable<string>;
+    public attributeListIsLoading: Observable<boolean>;
+    public attributeListIsLoaded: Observable<boolean>;
+    public attributeList: Observable<Attribute[]>;
 
     constructor(private store: Store<{ }>, private config: AppConfigService) {
-        this.datasetListIsLoading = store.select(datasetSelector.selectDatasetListIsLoading);
-        this.datasetListIsLoaded = store.select(datasetSelector.selectDatasetListIsLoaded);
-        this.datasetList = store.select(datasetSelector.selectAllDatasets);
+        this.instanceSelected = store.select(instanceSelector.selectInstanceNameByRoute);
+        this.datasetSelected = store.select(datasetSelector.selectDatasetNameByRoute);
+        this.attributeListIsLoading = store.select(attributeSelector.selectAttributeListIsLoading);
+        this.attributeListIsLoaded = store.select(attributeSelector.selectAttributeListIsLoaded);
+        this.attributeList = store.select(attributeSelector.selectAllAttributes);
     }
 
     ngOnInit() {
-        this.store.dispatch(datasetActions.loadDatasetList());
+        this.store.dispatch(attributeActions.loadAttributeList());
     }
 
     /**
diff --git a/client/src/app/instance/documentation/documentation-routing.module.ts b/client/src/app/instance/documentation/documentation-routing.module.ts
index 879044992fcd0841d2772f1a75c8fd83a779519d..285ad9f802ab495dd3bccd3e83d959d44f0d6757 100644
--- a/client/src/app/instance/documentation/documentation-routing.module.ts
+++ b/client/src/app/instance/documentation/documentation-routing.module.ts
@@ -10,10 +10,12 @@
 import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
 
-import { DocumentationComponent } from './documentation.component';
+import { DatasetListComponent } from "./containers/dataset-list.component";
+import { DocumentationComponent } from "./containers/documentation.component";
 
 const routes: Routes = [
-    { path: '', component: DocumentationComponent }
+    { path: '', component: DatasetListComponent },
+    { path: ':dname', component: DocumentationComponent },
 ];
 
 @NgModule({
@@ -23,5 +25,6 @@ const routes: Routes = [
 export class DocumentationRoutingModule { }
 
 export const routedComponents = [
+    DatasetListComponent,
     DocumentationComponent
 ];
diff --git a/client/src/app/instance/documentation/documentation.component.scss b/client/src/app/instance/documentation/documentation.component.scss
index e3c1e5f2327b63123c231d88c1a2a25263105969..9628a449933337140b185beb8686a2df2db1959f 100644
--- a/client/src/app/instance/documentation/documentation.component.scss
+++ b/client/src/app/instance/documentation/documentation.component.scss
@@ -7,7 +7,7 @@
  * file that was distributed with this source code.
  */
 
- blockquote {
+blockquote {
     background: #f9f9f9;
     border-left: 10px solid #ccc;
     margin: 1.5em 10px;
diff --git a/client/src/app/instance/documentation/documentation.module.ts b/client/src/app/instance/documentation/documentation.module.ts
index 31a1371dbf8fb3ae30442160747c868e8e96153b..f1505519d6c296391630729e362f0b3de08c8480 100644
--- a/client/src/app/instance/documentation/documentation.module.ts
+++ b/client/src/app/instance/documentation/documentation.module.ts
@@ -11,12 +11,16 @@ import { NgModule } from '@angular/core';
 
 import { SharedModule } from 'src/app/shared/shared.module';
 import { DocumentationRoutingModule, routedComponents } from './documentation-routing.module';
+import { dummiesComponents } from './components';
 
 @NgModule({
     imports: [
         SharedModule,
         DocumentationRoutingModule
     ],
-    declarations: [routedComponents]
+    declarations: [
+        routedComponents,
+        dummiesComponents
+    ]
 })
 export class DocumentationModule { }
diff --git a/client/src/app/instance/instance.component.ts b/client/src/app/instance/instance.component.ts
index 53fc798c6a9f63911e6127d4a58bec1aad4b4607..214fb769ab385501d5a877f016369ac40eb209f5 100644
--- a/client/src/app/instance/instance.component.ts
+++ b/client/src/app/instance/instance.component.ts
@@ -30,7 +30,7 @@ export class InstanceComponent implements OnInit {
         { label: 'Home', icon: 'fas fa-home', routerLink: 'home' },
         { label: 'Search', icon: 'fas fa-search', routerLink: 'search' },
         { label: 'Search multiple', icon: 'fas fa-search-plus', routerLink: 'search-multiple' },
-        { label: 'Documentation', icon: 'fas fa-question', routerLink: 'documentation' }
+        { label: 'Documentation', icon: 'fas fa-question', routerLink: 'documentation' },
     ];
     public isAuthenticated: Observable<boolean>;
     public userProfile: Observable<UserProfile>;