diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..8ad70ada80584eaff21adfe328fd559e486c82e1
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,13 @@
+tutorial/
+
+
+**/.git
+
+**/.ipython/
+**/.keras/
+**/.local/
+**/.cache/
+**/.config/
+**/.ipynb_checkpoints/
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ffff2848421a8b2cb5a8ed97f43abcd8fd743fbf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,115 @@
+tutorial/
+
+
+.idea/
+.ipython/
+.keras/
+.local/
+
+.DS_Store
+
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..32b18138ff9f8bfca902d35693afa481251a86b7
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,45 @@
+FROM jupyter/scipy-notebook:python-3.7
+
+# ================================================================================
+# Linux applications and libraries
+# ================================================================================
+
+# USER root
+#
+# RUN apt-get update --yes \
+#  && apt-get install --yes --no-install-recommends \
+#     openmpi-bin \
+#     libopenmpi-dev \
+#     cmake \
+#     libblas-dev \
+#     liblapack-dev \
+#     gfortran \
+#  && apt-get clean && rm -rf /var/lib/apt/lists/*
+#
+# USER ${NB_UID}
+
+# ================================================================================
+# Python environment
+# ================================================================================
+
+# RUN mamba install --quiet --yes \
+#     "nbgitpuller" \
+#  && mamba clean --all -f -y \
+#  && fix-permissions "${CONDA_DIR}" \
+#  && fix-permissions "/home/${NB_USER}"
+
+RUN pip install --prefer-binary --no-cache-dir \
+    "mdanalysis==2.1.0" \
+    "nglview==3.0.3" \
+    "scikit-learn" \
+    "pymatgen" \
+    "ipywidgets>=7.6.0,<8" \
+    "git+https://gitlab.mpcdf.mpg.de/nomad-lab/nomad-FAIR.git@develop#egg=nomad-lab" \
+ && fix-permissions "${CONDA_DIR}" \
+ && fix-permissions "/home/${NB_USER}"
+
+# Switch back to jovyan to avoid accidental container runs as root
+USER ${NB_UID}
+WORKDIR "${HOME}"
+
+# COPY --chown=${NB_UID} tutorials/ .
diff --git a/README.md b/README.md
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..acfa2b0174c29e95fc3778f6bd499e9b2f4ba232 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,11 @@
+## Getting started
+
+Building the docker image:
+```
+docker build -t nomadmdtutorial:latest .
+```
+
+Starting th jupyter notebook:
+```
+docker run --rm -it -p 8888:8888 -v "${PWD}":/home/jovyan/work nomadmdtutorial:latest
+```