-
+ {{'GENERAL.FILE-TRANSFORMER.' + fileTransformer?.format?.toUpperCase() | translate}}
diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts
index 94fcfe2bd..25f8806ef 100644
--- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts
+++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts
@@ -46,6 +46,7 @@ import { ReferenceType } from '@app/core/model/reference-type/reference-type';
import { IsActive } from '@app/core/common/enum/is-active.enum';
import { DmpFinalizeDialogComponent, DmpFinalizeDialogOutput } from '../dmp-finalize-dialog/dmp-finalize-dialog.component';
import { DmpEditorResolver } from '../dmp-editor-blueprint/dmp-editor.resolver';
+import { FileTransformerEntityType } from '@app/core/common/enum/file-transformer-entity-type';
@Component({
selector: 'app-dmp-overview',
@@ -67,6 +68,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit {
textMessage: any;
pastVersions: Dmp[]; //TODO: get these from the backend
selectedModel: EntityDoi;
+ fileTransformerEntityTypeEnum = FileTransformerEntityType;
@ViewChild('doi')
doi: ElementRef;
diff --git a/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts b/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts
index b84b7bfd3..3ee6be608 100644
--- a/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts
+++ b/dmp-frontend/src/app/ui/external-fetcher/external-fetcher-source-editor.model.ts
@@ -313,7 +313,7 @@ export class ResultFieldsMappingConfigurationEditorModel implements ResultFields
}
return this.formBuilder.group({
- code: [{ value: this.code, disabled: disabled }, context.getValidation('code').validators],
+ code: [{ value: this.code, disabled: true }, context.getValidation('code').validators],
responsePath: [{ value: this.responsePath, disabled: disabled }, context.getValidation('responsePath').validators],
});
}
diff --git a/dmp-frontend/src/app/ui/reference/reference-field/reference-field.component.ts b/dmp-frontend/src/app/ui/reference/reference-field/reference-field.component.ts
index e53f86a86..ef7efe3c8 100644
--- a/dmp-frontend/src/app/ui/reference/reference-field/reference-field.component.ts
+++ b/dmp-frontend/src/app/ui/reference/reference-field/reference-field.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input, OnInit } from '@angular/core';
+import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { UntypedFormArray, UntypedFormGroup } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { ReferenceType } from '@app/core/model/reference-type/reference-type';
@@ -13,13 +13,15 @@ import { Reference, ReferencePersist } from '@app/core/model/reference/reference
import { ReferenceSearchLookup } from '@app/core/query/reference-search.lookup';
import { Guid } from '@common/types/guid';
import { nameof } from 'ts-simple-nameof';
+import { Subscription } from 'rxjs';
+import { FormService } from '@common/forms/form-service';
@Component({
selector: 'app-reference-field-component',
templateUrl: 'reference-field.component.html',
styleUrls: ['./reference-field.component.scss']
})
-export class ReferenceFieldComponent extends BaseComponent implements OnInit {
+export class ReferenceFieldComponent extends BaseComponent implements OnInit, OnChanges {
@Input() referenceType: ReferenceType = null;
@Input() form: UntypedFormGroup = null;
@@ -31,25 +33,24 @@ export class ReferenceFieldComponent extends BaseComponent implements OnInit {
@Input() dependencies: UntypedFormGroup = null;
referenceToUse: Reference[]= [];
- referenceToUseInitialized = false;
+
+ referenceDepedencyIds: Guid[] = [];
multipleAutoCompleteSearchConfiguration: MultipleAutoCompleteConfiguration;
singleAutoCompleteSearchConfiguration: SingleAutoCompleteConfiguration;
+ dependenciesSubscription: Subscription = null;
constructor(
private referenceService: ReferenceService,
public enumUtils: EnumUtils,
+ public formService: FormService,
private dialog: MatDialog,
) { super(); }
ngOnInit() {
- const referenceDepedencyIds = this.referenceType.definition.sources.filter(x => x.referenceTypeDependencies).flatMap(x => x.referenceTypeDependencies).filter(x => x).map(x => x.id);
- if (referenceDepedencyIds.length > 0) {
- this.referenceToUseInitialized = false;
- this.dependencies.valueChanges.pipe(takeUntil(this._destroyed)).subscribe(changes => {
- this.resolveReferenceDepedency(referenceDepedencyIds);
- });
- this.resolveReferenceDepedency(referenceDepedencyIds);
+ this.referenceDepedencyIds = this.referenceType?.definition?.sources?.filter(x => x.referenceTypeDependencies).flatMap(x => x.referenceTypeDependencies).filter(x => x).map(x => x.id);
+ if (this.referenceDepedencyIds && this.referenceDepedencyIds.length > 0) {
+ this.resolveReferenceDepedency(true);
} else {
if (this.multiple) {
this.multipleAutoCompleteSearchConfiguration = this.referenceService.getMultipleAutoCompleteSearchConfiguration(this.referenceType.id, null);
@@ -59,15 +60,30 @@ export class ReferenceFieldComponent extends BaseComponent implements OnInit {
}
}
- resolveReferenceDepedency(referenceDepedencyIds: Guid[]) {
+ ngOnChanges(changes: SimpleChanges) {
+ if ((changes['dependencies'] || changes['referenceType']) && this.dependencies != null && this.referenceType != null) {
+ this.referenceDepedencyIds = this.referenceType?.definition?.sources?.filter(x => x.referenceTypeDependencies).flatMap(x => x.referenceTypeDependencies).filter(x => x).map(x => x.id);
+ if (this.referenceDepedencyIds && this.referenceDepedencyIds.length > 0) {
+ if (this.dependenciesSubscription != null) this.dependenciesSubscription.unsubscribe();
+ this.resolveReferenceDepedency(true);
+ this.dependenciesSubscription = this.dependencies.valueChanges.pipe(takeUntil(this._destroyed)).subscribe(changes => {
+ this.resolveReferenceDepedency(false);
+ });
+ }
+ }
+ }
+
+ resolveReferenceDepedency(isInitial: boolean) {
const referenceToUse : Reference[]= [];
Object.keys(this.dependencies.controls).forEach(controlName => {
// (this.dependencies.get(controlName).get('references').value as Reference[]).filter(x=> sourcesWithDependencies.some(y => y.referenceTypeDependencies) x.type.id == this.referenceType.id &&)
- const foudReferences: any[] = this.dependencies.get(controlName).get('references')?.value;
+ const ctrlValue = this.formService.getValue(this.dependencies.get(controlName).value);
+ const foudReferences: any[] = ctrlValue?.references || [];
+ if (ctrlValue?.reference) foudReferences.push(ctrlValue?.reference);
if (foudReferences != null) {
for (let i = 0; i < foudReferences.length; i++) {
const foudReference = foudReferences[i];
- if (foudReference?.typeId && referenceDepedencyIds.includes(foudReference.typeId)) {
+ if (foudReference?.typeId && this.referenceDepedencyIds.includes(foudReference.typeId)) {
const typed = foudReference as ReferencePersist;
referenceToUse.push({
@@ -84,20 +100,28 @@ export class ReferenceFieldComponent extends BaseComponent implements OnInit {
id: typed.typeId,
}
})
- } else if (foudReference?.type?.id && referenceDepedencyIds.includes(foudReference.type.id)) {
+ } else if (foudReference?.type?.id && this.referenceDepedencyIds.includes(foudReference.type.id)) {
const typed = foudReference as Reference;
if (typed != null) referenceToUse.push(typed);
}
}
}
});
- if (this.referenceToUseInitialized && (!referenceToUse.map(x => x.reference).every(x => this.referenceToUse.map(y => y.reference).includes(x)) ||
+ if (!isInitial && (!referenceToUse.map(x => x.reference).every(x => this.referenceToUse.map(y => y.reference).includes(x)) ||
!this.referenceToUse.map(x => x.reference).every(x => referenceToUse.map(y => y.reference).includes(x)))) {
- this.form.setValue(null, {onlySelf: true, emitEvent: false});
- }
+ this.referenceToUse = referenceToUse;
+ this.form.setValue(this.multiple ? [] : null);
+ this.form.updateValueAndValidity();
+ } else {
+ this.referenceToUse = referenceToUse;
+ }
+ // if (this.referenceToUseInitialized && (!referenceToUse.map(x => x.reference).every(x => this.referenceToUse.map(y => y.reference).includes(x)) ||
+ // !this.referenceToUse.map(x => x.reference).every(x => referenceToUse.map(y => y.reference).includes(x)))) {
+ // this.form.setValue(null, {onlySelf: true, emitEvent: false});
+ // }
- this.referenceToUse = referenceToUse;
- this.referenceToUseInitialized = true;
+ // this.referenceToUse = referenceToUse;
+ // this.referenceToUseInitialized = true;
if (this.multiple) {
this.multipleAutoCompleteSearchConfiguration = this.referenceService.getMultipleAutoCompleteSearchConfiguration(this.referenceType.id, this.referenceToUse);
@@ -125,10 +149,14 @@ export class ReferenceFieldComponent extends BaseComponent implements OnInit {
.pipe(takeUntil(this._destroyed))
.subscribe(newResult => {
if (!newResult) { return; }
- let results = this.form.value as ReferencePersist[];
- if (results == undefined) results = [];
- results.push(newResult);
- this.form.setValue(results);
+ if (this.multiple) {
+ let results = this.form.value as ReferencePersist[];
+ if (results == undefined) results = [];
+ results.push(newResult);
+ this.form.setValue(results);
+ } else {
+ this.form.setValue(newResult);
+ }
});
}
);
diff --git a/dmp-frontend/src/assets/i18n/de.json b/dmp-frontend/src/assets/i18n/de.json
index 3c7abed97..df7c192d0 100644
--- a/dmp-frontend/src/assets/i18n/de.json
+++ b/dmp-frontend/src/assets/i18n/de.json
@@ -1020,6 +1020,7 @@
"TYPE": "Type",
"DATATYPE": "Data Type",
"REQUIRED": "Pflichtfeld",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Autocomplete Data",
"MULTIPLE-AUTOCOMPLETE": "Multiple Autocomplete",
diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json
index 065c07a34..69b8f2678 100644
--- a/dmp-frontend/src/assets/i18n/en.json
+++ b/dmp-frontend/src/assets/i18n/en.json
@@ -1355,6 +1355,7 @@
"DATA-TYPE": "Data Type",
"CATEGORY": "Field Type",
"FIELD-REQUIRED": "Required",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"SEMANTICS": "Semantics",
"DESCRIPTION-TEMPLATES": "Description Templates",
"DESCRIPTION-TEMPLATE": "Description Template",
@@ -1395,6 +1396,7 @@
"DESCRIPTION": "Description",
"NO-TEMPLATE-MESSAGE": "If you can't find a template or if you want to create a personalized template for your institution, research community or training needs, please contact us.",
"DESCRIPTION-TEMPLATES-MAX-MULTIPLICITY": "Description Templates has reached the maximun multiplicity",
+ "UNSUCCESSFUL-REMOVE-TEMPLATE": "Failed to remove template, one or more Descriptions of this Plan use this template",
"FIELDS": {
"TITLE": "Title of Plan",
"DESCRIPTION": "Description",
@@ -1427,7 +1429,9 @@
"PREVIOUS-STEP": "Previous",
"NEXT-STEP": "Next",
"DEFAULT-BLUEPRINT": "Default Blueprint",
- "OR-CONTINUE-WITH": "or continue with"
+ "OR-CONTINUE-WITH": "or continue with",
+ "REMOVE-CONTACT": "Remove Contact",
+ "REMOVE-USER": "Remove User"
},
"PLACEHOLDER": {
"DESCRIPTION": "Fill with description",
@@ -2022,4 +2026,4 @@
"CONFIRM": "Confirm"
}
}
-}
\ No newline at end of file
+}
diff --git a/dmp-frontend/src/assets/i18n/es.json b/dmp-frontend/src/assets/i18n/es.json
index 26219253a..adf599702 100644
--- a/dmp-frontend/src/assets/i18n/es.json
+++ b/dmp-frontend/src/assets/i18n/es.json
@@ -1020,6 +1020,7 @@
"TYPE": "Tipo",
"DATATYPE": "Tipo de datos",
"REQUIRED": "Obligatorio",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Datos autocompletados",
"MULTIPLE-AUTOCOMPLETE": "Multiple Autocomplete",
diff --git a/dmp-frontend/src/assets/i18n/gr.json b/dmp-frontend/src/assets/i18n/gr.json
index 004286dc7..93e433072 100644
--- a/dmp-frontend/src/assets/i18n/gr.json
+++ b/dmp-frontend/src/assets/i18n/gr.json
@@ -1020,6 +1020,7 @@
"TYPE": "Τύπος",
"DATATYPE": "Τύπος Δεδομένων",
"REQUIRED": "Υποχρεωτικά",
+ "FIELD-MULTIPLE-SELECT": "Πολλαπλό",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Αυτόματη Συμπλήρωση Δεδομένων",
"MULTIPLE-AUTOCOMPLETE": "Πολλαπλή Αυτόματη Συμπλήρωση",
diff --git a/dmp-frontend/src/assets/i18n/hr.json b/dmp-frontend/src/assets/i18n/hr.json
index ee8b99a8d..771e64909 100644
--- a/dmp-frontend/src/assets/i18n/hr.json
+++ b/dmp-frontend/src/assets/i18n/hr.json
@@ -1020,6 +1020,7 @@
"TYPE": "Vrsta",
"DATATYPE": "Tip podataka",
"REQUIRED": "Obavezno",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Automatski unos podataka",
"MULTIPLE-AUTOCOMPLETE": "Višestruki automatski unos",
diff --git a/dmp-frontend/src/assets/i18n/pl.json b/dmp-frontend/src/assets/i18n/pl.json
index 55f92f947..379146dfc 100644
--- a/dmp-frontend/src/assets/i18n/pl.json
+++ b/dmp-frontend/src/assets/i18n/pl.json
@@ -1020,6 +1020,7 @@
"TYPE": "Typ",
"DATATYPE": "Typ danych",
"REQUIRED": "Wymagane",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Autouzupełnanie danych",
"MULTIPLE-AUTOCOMPLETE": "Wielokrotne autouzupełnianie",
diff --git a/dmp-frontend/src/assets/i18n/pt.json b/dmp-frontend/src/assets/i18n/pt.json
index d530808f1..b50b8daa8 100644
--- a/dmp-frontend/src/assets/i18n/pt.json
+++ b/dmp-frontend/src/assets/i18n/pt.json
@@ -1020,6 +1020,7 @@
"TYPE": "Tipo",
"DATATYPE": "Tipo de Dados",
"REQUIRED": "Obrigatório",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Autocompletar Dados",
"MULTIPLE-AUTOCOMPLETE": "Autopreenchimento Múltiplo",
diff --git a/dmp-frontend/src/assets/i18n/sk.json b/dmp-frontend/src/assets/i18n/sk.json
index c00ccb39a..8e914bc84 100644
--- a/dmp-frontend/src/assets/i18n/sk.json
+++ b/dmp-frontend/src/assets/i18n/sk.json
@@ -1020,6 +1020,7 @@
"TYPE": "Typ",
"DATATYPE": "Typ dát",
"REQUIRED": "Povinné",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Automatické dopĺňanie údajov",
"MULTIPLE-AUTOCOMPLETE": "Viacnásobné automatické dokončenie",
diff --git a/dmp-frontend/src/assets/i18n/sr.json b/dmp-frontend/src/assets/i18n/sr.json
index 0421c780f..203300ce0 100644
--- a/dmp-frontend/src/assets/i18n/sr.json
+++ b/dmp-frontend/src/assets/i18n/sr.json
@@ -1020,6 +1020,7 @@
"TYPE": "Tip",
"DATATYPE": "Tip podataka",
"REQUIRED": "Obavezno",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Automatski unos podataka",
"MULTIPLE-AUTOCOMPLETE": "Višestruki automatski unos",
diff --git a/dmp-frontend/src/assets/i18n/tr.json b/dmp-frontend/src/assets/i18n/tr.json
index 9587dfd30..f03985955 100644
--- a/dmp-frontend/src/assets/i18n/tr.json
+++ b/dmp-frontend/src/assets/i18n/tr.json
@@ -1020,6 +1020,7 @@
"TYPE": "Tip",
"DATATYPE": "Veri Tipi",
"REQUIRED": "Gerekli",
+ "FIELD-MULTIPLE-SELECT": "Multiple",
"EXTERNAL-AUTOCOMPLETE": {
"TITLE": "Verileri Otomatik Tamamla",
"MULTIPLE-AUTOCOMPLETE": "Çoklu Otomatik Tamamlama",
diff --git a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpBlueprintXmlMigrationService.java b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpBlueprintXmlMigrationService.java
index b7c59c1f1..f08394f3e 100644
--- a/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpBlueprintXmlMigrationService.java
+++ b/dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DmpBlueprintXmlMigrationService.java
@@ -183,12 +183,30 @@ public class DmpBlueprintXmlMigrationService {
case ACCESS_RIGHTS -> dataTyped.setType(DmpBlueprintSystemFieldType.AccessRights);
case CONTACT -> dataTyped.setType(DmpBlueprintSystemFieldType.Contact);
case LANGUAGE -> dataTyped.setType(DmpBlueprintSystemFieldType.Language);
- case FUNDER -> referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Funder);
- case GRANT -> referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Grants);
- case LICENSE -> referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.License);
- case ORGANIZATIONS -> referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Organizations);
- case PROJECT -> referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Project);
- case RESEARCHERS -> referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Researcher);
+ case FUNDER -> {
+ referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Funder);
+ referenceTypeFieldEntity.setMultipleSelect(false);
+ }
+ case GRANT -> {
+ referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Grants);
+ referenceTypeFieldEntity.setMultipleSelect(false);
+ }
+ case LICENSE -> {
+ referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.License);
+ referenceTypeFieldEntity.setMultipleSelect(true);
+ }
+ case ORGANIZATIONS -> {
+ referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Organizations);
+ referenceTypeFieldEntity.setMultipleSelect(true);
+ }
+ case PROJECT -> {
+ referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Project);
+ referenceTypeFieldEntity.setMultipleSelect(false);
+ }
+ case RESEARCHERS -> {
+ referenceTypeFieldEntity.setReferenceTypeId(ReferenceTypeIds.Researcher);
+ referenceTypeFieldEntity.setMultipleSelect(true);
+ }
default -> throw new MyApplicationException("Type not found " + systemField.getType());
}
if (systemField.getType().equals(SystemFieldType.TEXT) || systemField.getType().equals(SystemFieldType.HTML_TEXT) ||
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 000000000..b2d6de306
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,20 @@
+# Dependencies
+/node_modules
+
+# Production
+/build
+
+# Generated files
+.docusaurus
+.cache-loader
+
+# Misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 000000000..0c6c2c27b
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,41 @@
+# Website
+
+This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
+
+### Installation
+
+```
+$ yarn
+```
+
+### Local Development
+
+```
+$ yarn start
+```
+
+This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
+
+### Build
+
+```
+$ yarn build
+```
+
+This command generates static content into the `build` directory and can be served using any static contents hosting service.
+
+### Deployment
+
+Using SSH:
+
+```
+$ USE_SSH=true yarn deploy
+```
+
+Not using SSH:
+
+```
+$ GIT_USER= yarn deploy
+```
+
+If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
diff --git a/docs/babel.config.js b/docs/babel.config.js
new file mode 100644
index 000000000..e00595dae
--- /dev/null
+++ b/docs/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
+};
diff --git a/docs/docs/documentation/_category_.json b/docs/docs/documentation/_category_.json
new file mode 100644
index 000000000..ce0e61521
--- /dev/null
+++ b/docs/docs/documentation/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Documentation",
+ "position": 1,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/_category_.json b/docs/docs/documentation/administration/_category_.json
new file mode 100644
index 000000000..b1887e41a
--- /dev/null
+++ b/docs/docs/documentation/administration/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Administration",
+ "position": 4,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/blueprints/_category_.json b/docs/docs/documentation/administration/blueprints/_category_.json
new file mode 100644
index 000000000..4a6345c91
--- /dev/null
+++ b/docs/docs/documentation/administration/blueprints/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Blueprints",
+ "position": 2,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/blueprints/field-types.md b/docs/docs/documentation/administration/blueprints/field-types.md
new file mode 100644
index 000000000..2d0a1dc7d
--- /dev/null
+++ b/docs/docs/documentation/administration/blueprints/field-types.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Field Types
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/blueprints/prefilling-configurations.md b/docs/docs/documentation/administration/blueprints/prefilling-configurations.md
new file mode 100644
index 000000000..ce0a19688
--- /dev/null
+++ b/docs/docs/documentation/administration/blueprints/prefilling-configurations.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 3
+---
+
+# Prefilling Configurations
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/blueprints/semantics.md b/docs/docs/documentation/administration/blueprints/semantics.md
new file mode 100644
index 000000000..0225bae16
--- /dev/null
+++ b/docs/docs/documentation/administration/blueprints/semantics.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 2
+---
+
+# Semantics
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/introduction.md b/docs/docs/documentation/administration/introduction.md
new file mode 100644
index 000000000..4fd6418bb
--- /dev/null
+++ b/docs/docs/documentation/administration/introduction.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Introduction
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/languages.md b/docs/docs/documentation/administration/languages.md
new file mode 100644
index 000000000..c1b395290
--- /dev/null
+++ b/docs/docs/documentation/administration/languages.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 8
+---
+
+# Languages
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/notification-templates.md b/docs/docs/documentation/administration/notification-templates.md
new file mode 100644
index 000000000..396392192
--- /dev/null
+++ b/docs/docs/documentation/administration/notification-templates.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 10
+---
+
+# Notification Templates
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/reference-types.md b/docs/docs/documentation/administration/reference-types.md
new file mode 100644
index 000000000..2d32016fd
--- /dev/null
+++ b/docs/docs/documentation/administration/reference-types.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 5
+---
+
+# Reference Types
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/supportive-material.md b/docs/docs/documentation/administration/supportive-material.md
new file mode 100644
index 000000000..f315e300c
--- /dev/null
+++ b/docs/docs/documentation/administration/supportive-material.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 9
+---
+
+# Supportive Material
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/template-types.md b/docs/docs/documentation/administration/template-types.md
new file mode 100644
index 000000000..172632aa6
--- /dev/null
+++ b/docs/docs/documentation/administration/template-types.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 3
+---
+
+# Template Types
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/templates/_category_.json b/docs/docs/documentation/administration/templates/_category_.json
new file mode 100644
index 000000000..2d8ec47cb
--- /dev/null
+++ b/docs/docs/documentation/administration/templates/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Templates",
+ "position": 4,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/templates/conditional-questions.md b/docs/docs/documentation/administration/templates/conditional-questions.md
new file mode 100644
index 000000000..b5c231dbe
--- /dev/null
+++ b/docs/docs/documentation/administration/templates/conditional-questions.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 2
+---
+
+# Conditional Questions
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/templates/field-types.md b/docs/docs/documentation/administration/templates/field-types.md
new file mode 100644
index 000000000..2d0a1dc7d
--- /dev/null
+++ b/docs/docs/documentation/administration/templates/field-types.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Field Types
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/templates/semantics.md b/docs/docs/documentation/administration/templates/semantics.md
new file mode 100644
index 000000000..56598644b
--- /dev/null
+++ b/docs/docs/documentation/administration/templates/semantics.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 3
+---
+
+# Semantics
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/tenants.md b/docs/docs/documentation/administration/tenants.md
new file mode 100644
index 000000000..3fde922cb
--- /dev/null
+++ b/docs/docs/documentation/administration/tenants.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 7
+---
+
+# Tenants
\ No newline at end of file
diff --git a/docs/docs/documentation/administration/users.md b/docs/docs/documentation/administration/users.md
new file mode 100644
index 000000000..a34c624e0
--- /dev/null
+++ b/docs/docs/documentation/administration/users.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 6
+---
+
+# Users
\ No newline at end of file
diff --git a/docs/docs/documentation/application/_category_.json b/docs/docs/documentation/application/_category_.json
new file mode 100644
index 000000000..da3331abf
--- /dev/null
+++ b/docs/docs/documentation/application/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Application",
+ "position": 2,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/application/blueprints.md b/docs/docs/documentation/application/blueprints.md
new file mode 100644
index 000000000..2371fccce
--- /dev/null
+++ b/docs/docs/documentation/application/blueprints.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 3
+---
+
+# Blueprints
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/_category_.json b/docs/docs/documentation/application/descriptions/_category_.json
new file mode 100644
index 000000000..2bb33e9ef
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Descriptions",
+ "position": 6,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/collaborations.md b/docs/docs/documentation/application/descriptions/collaborations.md
new file mode 100644
index 000000000..2ffae5e8d
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/collaborations.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 5
+---
+
+# Collaborations
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/create-a-description.md b/docs/docs/documentation/application/descriptions/create-a-description.md
new file mode 100644
index 000000000..ee4d98871
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/create-a-description.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Create a Description
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/description-lifecycle.md b/docs/docs/documentation/application/descriptions/description-lifecycle.md
new file mode 100644
index 000000000..df8838717
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/description-lifecycle.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 4
+---
+
+# Description Lifecycle
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/edit-a-description.md b/docs/docs/documentation/application/descriptions/edit-a-description.md
new file mode 100644
index 000000000..96ff6b48d
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/edit-a-description.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 2
+---
+
+# Edit a Description
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/exports.md b/docs/docs/documentation/application/descriptions/exports.md
new file mode 100644
index 000000000..5ae1ec617
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/exports.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 8
+---
+
+# Exports
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/imports.md b/docs/docs/documentation/application/descriptions/imports.md
new file mode 100644
index 000000000..83c89dcbb
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/imports.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 7
+---
+
+# Imports
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/prefill-a-description.md b/docs/docs/documentation/application/descriptions/prefill-a-description.md
new file mode 100644
index 000000000..a9593ff80
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/prefill-a-description.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 3
+---
+
+# Prefill a Description
\ No newline at end of file
diff --git a/docs/docs/documentation/application/descriptions/reviewing.md b/docs/docs/documentation/application/descriptions/reviewing.md
new file mode 100644
index 000000000..632286a5c
--- /dev/null
+++ b/docs/docs/documentation/application/descriptions/reviewing.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 6
+---
+
+# Reviewing
\ No newline at end of file
diff --git a/docs/docs/documentation/application/introduction.md b/docs/docs/documentation/application/introduction.md
new file mode 100644
index 000000000..4fd6418bb
--- /dev/null
+++ b/docs/docs/documentation/application/introduction.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Introduction
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/_category_.json b/docs/docs/documentation/application/plans/_category_.json
new file mode 100644
index 000000000..02fcb2623
--- /dev/null
+++ b/docs/docs/documentation/application/plans/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Plans",
+ "position": 5,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/create-a-plan.md b/docs/docs/documentation/application/plans/create-a-plan.md
new file mode 100644
index 000000000..0842c8c23
--- /dev/null
+++ b/docs/docs/documentation/application/plans/create-a-plan.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Create a Plan
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/doi-assignment.md b/docs/docs/documentation/application/plans/doi-assignment.md
new file mode 100644
index 000000000..ec347f1a4
--- /dev/null
+++ b/docs/docs/documentation/application/plans/doi-assignment.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 9
+---
+
+# DOI Assignment
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/edit-a-plan.md b/docs/docs/documentation/application/plans/edit-a-plan.md
new file mode 100644
index 000000000..5a6239983
--- /dev/null
+++ b/docs/docs/documentation/application/plans/edit-a-plan.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 2
+---
+
+# Edit a Plan
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/exports.md b/docs/docs/documentation/application/plans/exports.md
new file mode 100644
index 000000000..5ae1ec617
--- /dev/null
+++ b/docs/docs/documentation/application/plans/exports.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 8
+---
+
+# Exports
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/imports.md b/docs/docs/documentation/application/plans/imports.md
new file mode 100644
index 000000000..83c89dcbb
--- /dev/null
+++ b/docs/docs/documentation/application/plans/imports.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 7
+---
+
+# Imports
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/invite-collaborators.md b/docs/docs/documentation/application/plans/invite-collaborators.md
new file mode 100644
index 000000000..3006e7d3d
--- /dev/null
+++ b/docs/docs/documentation/application/plans/invite-collaborators.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 4
+---
+
+# Invite collaborators
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/plan-lifecycle.md b/docs/docs/documentation/application/plans/plan-lifecycle.md
new file mode 100644
index 000000000..219c4512d
--- /dev/null
+++ b/docs/docs/documentation/application/plans/plan-lifecycle.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 3
+---
+
+# Plan lifecycle
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/reviewing.md b/docs/docs/documentation/application/plans/reviewing.md
new file mode 100644
index 000000000..632286a5c
--- /dev/null
+++ b/docs/docs/documentation/application/plans/reviewing.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 6
+---
+
+# Reviewing
\ No newline at end of file
diff --git a/docs/docs/documentation/application/plans/versions.md b/docs/docs/documentation/application/plans/versions.md
new file mode 100644
index 000000000..82acacc56
--- /dev/null
+++ b/docs/docs/documentation/application/plans/versions.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 5
+---
+
+# Versions
\ No newline at end of file
diff --git a/docs/docs/documentation/application/references.md b/docs/docs/documentation/application/references.md
new file mode 100644
index 000000000..7e37155ee
--- /dev/null
+++ b/docs/docs/documentation/application/references.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 2
+---
+
+# References
\ No newline at end of file
diff --git a/docs/docs/documentation/application/templates.md b/docs/docs/documentation/application/templates.md
new file mode 100644
index 000000000..d4af0d40c
--- /dev/null
+++ b/docs/docs/documentation/application/templates.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 4
+---
+
+# Templates
\ No newline at end of file
diff --git a/docs/docs/documentation/for-devs/_category_.json b/docs/docs/documentation/for-devs/_category_.json
new file mode 100644
index 000000000..394d4ebd2
--- /dev/null
+++ b/docs/docs/documentation/for-devs/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "For Developers",
+ "position": 5,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/for-devs/apis/_category_.json b/docs/docs/documentation/for-devs/apis/_category_.json
new file mode 100644
index 000000000..354f2f640
--- /dev/null
+++ b/docs/docs/documentation/for-devs/apis/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "APIs",
+ "position": 2,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/for-devs/apis/swagger.md b/docs/docs/documentation/for-devs/apis/swagger.md
new file mode 100644
index 000000000..71bb1113b
--- /dev/null
+++ b/docs/docs/documentation/for-devs/apis/swagger.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Swagger
\ No newline at end of file
diff --git a/docs/docs/documentation/for-devs/authentication/_category_.json b/docs/docs/documentation/for-devs/authentication/_category_.json
new file mode 100644
index 000000000..7334b7853
--- /dev/null
+++ b/docs/docs/documentation/for-devs/authentication/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Authentication",
+ "position": 1,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/for-devs/authentication/keycloak.md b/docs/docs/documentation/for-devs/authentication/keycloak.md
new file mode 100644
index 000000000..f3129a212
--- /dev/null
+++ b/docs/docs/documentation/for-devs/authentication/keycloak.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# Keycloak
\ No newline at end of file
diff --git a/docs/docs/documentation/getting-started/_category_.json b/docs/docs/documentation/getting-started/_category_.json
new file mode 100644
index 000000000..14206eb29
--- /dev/null
+++ b/docs/docs/documentation/getting-started/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Getting Started",
+ "position": 1,
+ "link": {
+ "type": "generated-index"
+ }
+}
diff --git a/docs/docs/documentation/getting-started/architecture.md b/docs/docs/documentation/getting-started/architecture.md
new file mode 100644
index 000000000..d12ff1dfc
--- /dev/null
+++ b/docs/docs/documentation/getting-started/architecture.md
@@ -0,0 +1,7 @@
+---
+sidebar_position: 3
+---
+
+# Architecture
+
+
diff --git a/docs/docs/documentation/getting-started/installation.md b/docs/docs/documentation/getting-started/installation.md
new file mode 100644
index 000000000..68f67b3f7
--- /dev/null
+++ b/docs/docs/documentation/getting-started/installation.md
@@ -0,0 +1,7 @@
+---
+sidebar_position: 2
+---
+
+# Installation
+
+
diff --git a/docs/docs/documentation/getting-started/introduction.md b/docs/docs/documentation/getting-started/introduction.md
new file mode 100644
index 000000000..76a25123e
--- /dev/null
+++ b/docs/docs/documentation/getting-started/introduction.md
@@ -0,0 +1,7 @@
+---
+sidebar_position: 1
+---
+
+# Introduction
+
+
diff --git a/docs/docs/documentation/supplementary-services/_category_.json b/docs/docs/documentation/supplementary-services/_category_.json
new file mode 100644
index 000000000..a39ecc7b7
--- /dev/null
+++ b/docs/docs/documentation/supplementary-services/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Supplementary Services",
+ "position": 3,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/supplementary-services/annotations.md b/docs/docs/documentation/supplementary-services/annotations.md
new file mode 100644
index 000000000..faf58a11d
--- /dev/null
+++ b/docs/docs/documentation/supplementary-services/annotations.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 2
+---
+
+# Annotations
\ No newline at end of file
diff --git a/docs/docs/documentation/supplementary-services/deposit-services.md b/docs/docs/documentation/supplementary-services/deposit-services.md
new file mode 100644
index 000000000..19688168e
--- /dev/null
+++ b/docs/docs/documentation/supplementary-services/deposit-services.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 4
+---
+
+# Deposit Services
\ No newline at end of file
diff --git a/docs/docs/documentation/supplementary-services/file-transformers.md b/docs/docs/documentation/supplementary-services/file-transformers.md
new file mode 100644
index 000000000..e26a941ba
--- /dev/null
+++ b/docs/docs/documentation/supplementary-services/file-transformers.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 3
+---
+
+# File Transformers
\ No newline at end of file
diff --git a/docs/docs/documentation/supplementary-services/notifications/_category_.json b/docs/docs/documentation/supplementary-services/notifications/_category_.json
new file mode 100644
index 000000000..c55d472b4
--- /dev/null
+++ b/docs/docs/documentation/supplementary-services/notifications/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Notifications",
+ "position": 1,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/documentation/supplementary-services/notifications/email.md b/docs/docs/documentation/supplementary-services/notifications/email.md
new file mode 100644
index 000000000..edbdf1ca4
--- /dev/null
+++ b/docs/docs/documentation/supplementary-services/notifications/email.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 2
+---
+
+# Email
\ No newline at end of file
diff --git a/docs/docs/documentation/supplementary-services/notifications/in-app.md b/docs/docs/documentation/supplementary-services/notifications/in-app.md
new file mode 100644
index 000000000..eba571a9b
--- /dev/null
+++ b/docs/docs/documentation/supplementary-services/notifications/in-app.md
@@ -0,0 +1,5 @@
+---
+sidebar_position: 1
+---
+
+# InApp
\ No newline at end of file
diff --git a/docs/docs/tutorials/_category_.json b/docs/docs/tutorials/_category_.json
new file mode 100644
index 000000000..ae410ff82
--- /dev/null
+++ b/docs/docs/tutorials/_category_.json
@@ -0,0 +1,7 @@
+{
+ "label": "Tutorials",
+ "position": 1,
+ "link": {
+ "type": "generated-index"
+ }
+}
\ No newline at end of file
diff --git a/docs/docs/tutorials/intro.md b/docs/docs/tutorials/intro.md
new file mode 100644
index 000000000..45e8604c8
--- /dev/null
+++ b/docs/docs/tutorials/intro.md
@@ -0,0 +1,47 @@
+---
+sidebar_position: 1
+---
+
+# Tutorial Intro
+
+Let's discover **Docusaurus in less than 5 minutes**.
+
+## Getting Started
+
+Get started by **creating a new site**.
+
+Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
+
+### What you'll need
+
+- [Node.js](https://nodejs.org/en/download/) version 18.0 or above:
+ - When installing Node.js, you are recommended to check all checkboxes related to dependencies.
+
+## Generate a new site
+
+Generate a new Docusaurus site using the **classic template**.
+
+The classic template will automatically be added to your project after you run the command:
+
+```bash
+npm init docusaurus@latest my-website classic
+```
+
+You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
+
+The command also installs all necessary dependencies you need to run Docusaurus.
+
+## Start your site
+
+Run the development server:
+
+```bash
+cd my-website
+npm run start
+```
+
+The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
+
+The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
+
+Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
diff --git a/docs/docs/tutorials/tutorial-basics/_category_.json b/docs/docs/tutorials/tutorial-basics/_category_.json
new file mode 100644
index 000000000..2e6db55b1
--- /dev/null
+++ b/docs/docs/tutorials/tutorial-basics/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Tutorial - Basics",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "5 minutes to learn the most important Docusaurus concepts."
+ }
+}
diff --git a/docs/docs/tutorials/tutorial-basics/congratulations.md b/docs/docs/tutorials/tutorial-basics/congratulations.md
new file mode 100644
index 000000000..04771a00b
--- /dev/null
+++ b/docs/docs/tutorials/tutorial-basics/congratulations.md
@@ -0,0 +1,23 @@
+---
+sidebar_position: 6
+---
+
+# Congratulations!
+
+You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
+
+Docusaurus has **much more to offer**!
+
+Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
+
+Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
+
+## What's next?
+
+- Read the [official documentation](https://docusaurus.io/)
+- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config)
+- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration)
+- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
+- Add a [search bar](https://docusaurus.io/docs/search)
+- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
+- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
diff --git a/docs/docs/tutorials/tutorial-basics/create-a-blog-post.md b/docs/docs/tutorials/tutorial-basics/create-a-blog-post.md
new file mode 100644
index 000000000..550ae17ee
--- /dev/null
+++ b/docs/docs/tutorials/tutorial-basics/create-a-blog-post.md
@@ -0,0 +1,34 @@
+---
+sidebar_position: 3
+---
+
+# Create a Blog Post
+
+Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
+
+## Create your first Post
+
+Create a file at `blog/2021-02-28-greetings.md`:
+
+```md title="blog/2021-02-28-greetings.md"
+---
+slug: greetings
+title: Greetings!
+authors:
+ - name: Joel Marcey
+ title: Co-creator of Docusaurus 1
+ url: https://github.com/JoelMarcey
+ image_url: https://github.com/JoelMarcey.png
+ - name: Sébastien Lorber
+ title: Docusaurus maintainer
+ url: https://sebastienlorber.com
+ image_url: https://github.com/slorber.png
+tags: [greetings]
+---
+
+Congratulations, you have made your first post!
+
+Feel free to play around and edit this post as much as you like.
+```
+
+A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
diff --git a/docs/docs/tutorials/tutorial-basics/create-a-document.md b/docs/docs/tutorials/tutorial-basics/create-a-document.md
new file mode 100644
index 000000000..c22fe2944
--- /dev/null
+++ b/docs/docs/tutorials/tutorial-basics/create-a-document.md
@@ -0,0 +1,57 @@
+---
+sidebar_position: 2
+---
+
+# Create a Document
+
+Documents are **groups of pages** connected through:
+
+- a **sidebar**
+- **previous/next navigation**
+- **versioning**
+
+## Create your first Doc
+
+Create a Markdown file at `docs/hello.md`:
+
+```md title="docs/hello.md"
+# Hello
+
+This is my **first Docusaurus document**!
+```
+
+A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
+
+## Configure the Sidebar
+
+Docusaurus automatically **creates a sidebar** from the `docs` folder.
+
+Add metadata to customize the sidebar label and position:
+
+```md title="docs/hello.md" {1-4}
+---
+sidebar_label: 'Hi!'
+sidebar_position: 3
+---
+
+# Hello
+
+This is my **first Docusaurus document**!
+```
+
+It is also possible to create your sidebar explicitly in `sidebars.js`:
+
+```js title="sidebars.js"
+export default {
+ tutorialSidebar: [
+ 'intro',
+ // highlight-next-line
+ 'hello',
+ {
+ type: 'category',
+ label: 'Tutorial',
+ items: ['tutorial-basics/create-a-document'],
+ },
+ ],
+};
+```
diff --git a/docs/docs/tutorials/tutorial-basics/create-a-page.md b/docs/docs/tutorials/tutorial-basics/create-a-page.md
new file mode 100644
index 000000000..20e2ac300
--- /dev/null
+++ b/docs/docs/tutorials/tutorial-basics/create-a-page.md
@@ -0,0 +1,43 @@
+---
+sidebar_position: 1
+---
+
+# Create a Page
+
+Add **Markdown or React** files to `src/pages` to create a **standalone page**:
+
+- `src/pages/index.js` → `localhost:3000/`
+- `src/pages/foo.md` → `localhost:3000/foo`
+- `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
+
+## Create your first React Page
+
+Create a file at `src/pages/my-react-page.js`:
+
+```jsx title="src/pages/my-react-page.js"
+import React from 'react';
+import Layout from '@theme/Layout';
+
+export default function MyReactPage() {
+ return (
+
+
My React page
+
This is a React page
+
+ );
+}
+```
+
+A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page).
+
+## Create your first Markdown Page
+
+Create a file at `src/pages/my-markdown-page.md`:
+
+```mdx title="src/pages/my-markdown-page.md"
+# My Markdown page
+
+This is a Markdown page
+```
+
+A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page).
diff --git a/docs/docs/tutorials/tutorial-basics/deploy-your-site.md b/docs/docs/tutorials/tutorial-basics/deploy-your-site.md
new file mode 100644
index 000000000..1c50ee063
--- /dev/null
+++ b/docs/docs/tutorials/tutorial-basics/deploy-your-site.md
@@ -0,0 +1,31 @@
+---
+sidebar_position: 5
+---
+
+# Deploy your site
+
+Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**).
+
+It builds your site as simple **static HTML, JavaScript and CSS files**.
+
+## Build your site
+
+Build your site **for production**:
+
+```bash
+npm run build
+```
+
+The static files are generated in the `build` folder.
+
+## Deploy your site
+
+Test your production build locally:
+
+```bash
+npm run serve
+```
+
+The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/).
+
+You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**).
diff --git a/docs/docs/tutorials/tutorial-basics/markdown-features.mdx b/docs/docs/tutorials/tutorial-basics/markdown-features.mdx
new file mode 100644
index 000000000..35e00825e
--- /dev/null
+++ b/docs/docs/tutorials/tutorial-basics/markdown-features.mdx
@@ -0,0 +1,152 @@
+---
+sidebar_position: 4
+---
+
+# Markdown Features
+
+Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
+
+## Front Matter
+
+Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
+
+```text title="my-doc.md"
+// highlight-start
+---
+id: my-doc-id
+title: My document title
+description: My document description
+slug: /my-custom-url
+---
+// highlight-end
+
+## Markdown heading
+
+Markdown text with [links](./hello.md)
+```
+
+## Links
+
+Regular Markdown links are supported, using url paths or relative file paths.
+
+```md
+Let's see how to [Create a page](/create-a-page).
+```
+
+```md
+Let's see how to [Create a page](./create-a-page.md).
+```
+
+**Result:** Let's see how to [Create a page](./create-a-page.md).
+
+## Images
+
+Regular Markdown images are supported.
+
+You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
+
+```md
+![Docusaurus logo](/img/docusaurus.png)
+```
+
+![Docusaurus logo](/img/docusaurus.png)
+
+You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
+
+```md
+![Docusaurus logo](./img/docusaurus.png)
+```
+
+## Code Blocks
+
+Markdown code blocks are supported with Syntax highlighting.
+
+````md
+```jsx title="src/components/HelloDocusaurus.js"
+function HelloDocusaurus() {
+ return