diff --git a/pyproject.toml b/pyproject.toml
index d4dce2596e034256202e2142a9d6fb6b6a76ef47..07ff15aff1312c04c70b5457e3369a8fd107b13f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -125,7 +125,7 @@ dev = [
     'mkdocs',
     'mypy==1.0.1', # bug: incompatible with derived models of pydantic v1
     'names==0.3.0',
-    'uv',
+    'uv>=0.2.35',
     'pycodestyle',
     'pytest-asyncio',
     'pytest-cov>=2.7.1',
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 8798de4d40b98c08fc3c0718775331a2493124b6..cbc5d59c83c271de7c8762076e9cdff83b34990b 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,5 +1,5 @@
 # This file was autogenerated by uv via the following command:
-#    uv pip compile -p 3.11 --python-platform linux --annotation-style=line --extra=dev --extra=infrastructure --extra=parsing --output-file=requirements-dev.txt requirements.txt pyproject.toml
+#    uv pip compile --universal --annotation-style=line --extra=dev --extra=infrastructure --extra=parsing --output-file=requirements-dev.txt requirements.txt pyproject.toml
 aiosmtpd==1.4.6           # via nomad-lab (pyproject.toml)
 alabaster==1.0.0          # via sphinx, -r requirements.txt
 alembic==1.13.2           # via jupyterhub, -r requirements.txt
@@ -17,7 +17,7 @@ async-property==0.2.2     # via python-keycloak, -r requirements.txt
 atpublic==5.0             # via aiosmtpd
 attrs==24.2.0             # via aiosmtpd, jsonschema, -r requirements.txt
 babel==2.16.0             # via mkdocs-git-revision-date-localized-plugin, mkdocs-material, sphinx, -r requirements.txt
-backports-tarfile==1.2.0  # via jaraco-context
+backports-tarfile==1.2.0 ; python_version < '3.12.0'  # via jaraco-context
 bagit==1.8.1              # via -r requirements.txt, nomad-lab (pyproject.toml)
 basicauth==0.4.1          # via -r requirements.txt, nomad-lab (pyproject.toml)
 beautifulsoup4==4.12.3    # via -r requirements.txt, nomad-lab (pyproject.toml)
@@ -30,14 +30,14 @@ cachetools==5.4.0         # via -r requirements.txt, nomad-lab (pyproject.toml)
 celery==5.4.0             # via -r requirements.txt, nomad-lab (pyproject.toml)
 certifi==2024.7.4         # via elasticsearch, httpcore, httpx, netcdf4, requests, -r requirements.txt
 certipy==0.1.3            # via jupyterhub, -r requirements.txt
-cffi==1.17.0              # via cryptography, -r requirements.txt
+cffi==1.17.0 ; platform_python_implementation != 'PyPy'  # via cryptography, -r requirements.txt
 cftime==1.6.4             # via netcdf4, -r requirements.txt
 charset-normalizer==3.3.2  # via requests, -r requirements.txt
 click==8.1.7              # via asr, celery, click-didyoumean, click-plugins, click-repl, flask, mkdocs, mkdocs-click, uvicorn, -r requirements.txt, nomad-lab (pyproject.toml)
 click-didyoumean==0.3.1   # via celery, -r requirements.txt
 click-plugins==1.1.1      # via celery, -r requirements.txt
 click-repl==0.3.0         # via celery, -r requirements.txt
-colorama==0.4.6           # via mkdocs-material, twine
+colorama==0.4.6           # via build, click, mkdocs, mkdocs-material, pytest, sphinx, tqdm, twine, uvicorn, -r requirements.txt
 commonmark==0.9.1         # via recommonmark, -r requirements.txt
 contourpy==1.2.1          # via matplotlib, -r requirements.txt
 coverage==7.6.1           # via pytest-cov
@@ -69,7 +69,7 @@ fqdn==1.5.1               # via jsonschema, -r requirements.txt
 ghp-import==2.1.0         # via mkdocs
 gitdb==4.0.11             # via gitpython, -r requirements.txt
 gitpython==3.1.43         # via mkdocs-git-revision-date-localized-plugin, -r requirements.txt, nomad-lab (pyproject.toml)
-greenlet==3.0.3           # via sqlalchemy, -r requirements.txt
+greenlet==3.0.3 ; (python_version < '3.13' and platform_machine == 'AMD64') or (python_version < '3.13' and platform_machine == 'WIN32') or (python_version < '3.13' and platform_machine == 'aarch64') or (python_version < '3.13' and platform_machine == 'amd64') or (python_version < '3.13' and platform_machine == 'ppc64le') or (python_version < '3.13' and platform_machine == 'win32') or (python_version < '3.13' and platform_machine == 'x86_64')  # via sqlalchemy, -r requirements.txt
 griddataformats==1.0.2    # via mdanalysis, -r requirements.txt
 gsd==3.3.0                # via mdanalysis, -r requirements.txt
 gunicorn==21.2.0          # via -r requirements.txt, nomad-lab (pyproject.toml)
@@ -92,7 +92,7 @@ itsdangerous==2.2.0       # via flask, -r requirements.txt, nomad-lab (pyproject
 jaraco-classes==3.4.0     # via keyring
 jaraco-context==5.3.0     # via keyring
 jaraco-functools==4.0.2   # via keyring
-jeepney==0.8.0            # via keyring, secretstorage
+jeepney==0.8.0 ; sys_platform == 'linux'  # via keyring, secretstorage
 jinja2==3.1.4             # via flask, jupyterhub, mkdocs, mkdocs-macros-plugin, mkdocs-material, sphinx, -r requirements.txt
 jmespath==1.0.1           # via -r requirements.txt, nomad-lab (pyproject.toml)
 joblib==1.4.2             # via mdanalysis, pymatgen, scikit-learn, -r requirements.txt
@@ -153,7 +153,7 @@ orjson==3.10.7            # via h5grove, -r requirements.txt, nomad-lab (pyproje
 packaging==24.1           # via build, deprecation, f90wrap, gunicorn, jupyterhub, matplotlib, mdanalysis, mkdocs, mongomock, pint, plotly, pytest, sphinx, xarray, -r requirements.txt
 paginate==0.5.6           # via mkdocs-material
 palettable==3.3.3         # via pymatgen, -r requirements.txt
-pamela==1.1.0             # via jupyterhub, -r requirements.txt
+pamela==1.2.0 ; sys_platform != 'win32'  # via jupyterhub, -r requirements.txt
 pandas==1.5.3             # via nomad-openbis, panedr, pymatgen, xarray, -r requirements.txt, nomad-lab (pyproject.toml)
 panedr==0.8.0             # via -r requirements.txt, nomad-lab (pyproject.toml)
 parmed==4.2.2             # via -r requirements.txt, nomad-lab (pyproject.toml)
@@ -167,11 +167,12 @@ plotly==5.23.0            # via asr, pymatgen, -r requirements.txt
 pluggy==1.5.0             # via pytest
 prometheus-client==0.20.0  # via jupyterhub, -r requirements.txt
 prompt-toolkit==3.0.47    # via click-repl, -r requirements.txt
+psutil==6.0.0 ; sys_platform == 'win32'  # via jupyterhub, -r requirements.txt
 pyasn1==0.6.0             # via pyasn1-modules, rfc3161ng, -r requirements.txt
 pyasn1-modules==0.4.0     # via rfc3161ng, -r requirements.txt
 pybtex==0.24.0            # via pymatgen, -r requirements.txt
 pycodestyle==2.12.1       # via nomad-lab (pyproject.toml)
-pycparser==2.22           # via cffi, -r requirements.txt
+pycparser==2.22 ; platform_python_implementation != 'PyPy'  # via cffi, -r requirements.txt
 pydantic==1.10.17         # via fastapi, optimade, -r requirements.txt, nomad-lab (pyproject.toml)
 pyedr==0.8.0              # via panedr, -r requirements.txt
 pygments==2.18.0          # via devtools, mkdocs-material, readme-renderer, sphinx, -r requirements.txt
@@ -196,8 +197,11 @@ python-json-logger==2.0.2  # via jupyter-telemetry, -r requirements.txt, nomad-l
 python-keycloak==4.3.0    # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-logstash==0.4.6    # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-magic==0.4.24      # via -r requirements.txt, nomad-lab (pyproject.toml)
+python-magic-bin==0.4.14 ; sys_platform == 'win32'  # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-multipart==0.0.9   # via -r requirements.txt, nomad-lab (pyproject.toml)
 pytz==2024.1              # via mkdocs-git-revision-date-localized-plugin, pandas, -r requirements.txt, nomad-lab (pyproject.toml)
+pywin32==306 ; sys_platform == 'win32'  # via docker, -r requirements.txt
+pywin32-ctypes==0.2.2 ; sys_platform == 'win32'  # via keyring
 pyyaml==6.0.2             # via mkdocs, mkdocs-get-deps, mkdocs-macros-plugin, phonopy, pybtex, pymdown-extensions, pyyaml-env-tag, uvicorn, -r requirements.txt, nomad-lab (pyproject.toml)
 pyyaml-env-tag==0.1       # via mkdocs
 quippy-ase==0.9.14        # via -r requirements.txt, nomad-lab (pyproject.toml)
@@ -214,12 +218,12 @@ rfc3986==2.0.0            # via twine
 rfc3987==1.3.8            # via jsonschema, -r requirements.txt
 rope==0.21.0              # via nomad-lab (pyproject.toml)
 ruamel-yaml==0.18.6       # via jupyter-telemetry, oauthenticator, pymatgen, -r requirements.txt, nomad-lab (pyproject.toml)
-ruamel-yaml-clib==0.2.8   # via ruamel-yaml, -r requirements.txt
+ruamel-yaml-clib==0.2.8 ; python_version < '3.13' and platform_python_implementation == 'CPython'  # via ruamel-yaml, -r requirements.txt
 ruff==0.5.7               # via nomad-lab (pyproject.toml)
 runstats==2.0.0           # via -r requirements.txt, nomad-lab (pyproject.toml)
 scikit-learn==1.5.1       # via matid, -r requirements.txt, nomad-lab (pyproject.toml)
 scipy==1.14.0             # via ase, griddataformats, matid, mdanalysis, pymatgen, scikit-learn, -r requirements.txt, nomad-lab (pyproject.toml)
-secretstorage==3.3.3      # via keyring
+secretstorage==3.3.3 ; sys_platform == 'linux'  # via keyring
 sentinels==1.0.0          # via mongomock, -r requirements.txt
 six==1.16.0               # via asttokens, basicauth, elasticsearch-dsl, html5lib, isodate, pybtex, python-dateutil, rdflib, rfc3339-validator, validators, -r requirements.txt
 smmap==5.0.1              # via gitdb, -r requirements.txt
@@ -258,15 +262,15 @@ uncertainties==3.2.2      # via pymatgen, -r requirements.txt
 unidecode==1.3.2          # via -r requirements.txt, nomad-lab (pyproject.toml)
 uri-template==1.3.0       # via jsonschema, -r requirements.txt
 urllib3==1.26.19          # via docker, elasticsearch, nomad-openbis, requests, -r requirements.txt
-uv==0.2.34                # via nomad-lab (pyproject.toml)
+uv==0.2.35                # via nomad-lab (pyproject.toml)
 uvicorn==0.30.5           # via h5grove, -r requirements.txt, nomad-lab (pyproject.toml)
-uvloop==0.19.0            # via uvicorn, -r requirements.txt
+uvloop==0.19.0 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'  # via uvicorn, -r requirements.txt
 validators==0.18.2        # via -r requirements.txt, nomad-lab (pyproject.toml)
 vine==5.1.0               # via amqp, celery, kombu, -r requirements.txt
 watchdog==4.0.1           # via mkdocs
 watchfiles==0.23.0        # via uvicorn, -r requirements.txt
 wcwidth==0.2.13           # via prompt-toolkit, -r requirements.txt
-webcolors==24.6.0         # via jsonschema, -r requirements.txt
+webcolors==24.8.0         # via jsonschema, -r requirements.txt
 webencodings==0.5.1       # via html5lib, -r requirements.txt
 websockets==12.0          # via uvicorn, -r requirements.txt
 werkzeug==3.0.3           # via flask, -r requirements.txt
diff --git a/requirements.txt b/requirements.txt
index dbe9d170c55717f43ee004818de8636ff6813d53..95517735275fc5ce718bb75be1d61980cfcd447c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
 # This file was autogenerated by uv via the following command:
-#    uv pip compile -p 3.11 --python-platform linux --annotation-style=line --extra=infrastructure --extra=parsing --output-file=requirements.txt dependencies/nomad-dos-fingerprints/pyproject.toml dependencies/parsers/eelsdb/pyproject.toml pyproject.toml
+#    uv pip compile --universal --annotation-style=line --extra=infrastructure --extra=parsing --output-file=requirements.txt dependencies/nomad-dos-fingerprints/pyproject.toml dependencies/parsers/eelsdb/pyproject.toml pyproject.toml
 alabaster==1.0.0          # via sphinx
 alembic==1.13.2           # via jupyterhub
 amqp==5.2.0               # via kombu
@@ -24,13 +24,14 @@ cachetools==5.4.0         # via nomad-lab (pyproject.toml)
 celery==5.4.0             # via nomad-lab (pyproject.toml)
 certifi==2024.7.4         # via elasticsearch, httpcore, httpx, netcdf4, requests
 certipy==0.1.3            # via jupyterhub
-cffi==1.17.0              # via cryptography
+cffi==1.17.0 ; platform_python_implementation != 'PyPy'  # via cryptography
 cftime==1.6.4             # via netcdf4
 charset-normalizer==3.3.2  # via requests
 click==8.1.7              # via asr, celery, click-didyoumean, click-plugins, click-repl, flask, uvicorn, nomad-lab (pyproject.toml)
 click-didyoumean==0.3.1   # via celery
 click-plugins==1.1.1      # via celery
 click-repl==0.3.0         # via celery
+colorama==0.4.6 ; sys_platform == 'win32' or platform_system == 'Windows'  # via click, sphinx, tqdm, uvicorn
 commonmark==0.9.1         # via recommonmark
 contourpy==1.2.1          # via matplotlib
 cryptography==43.0.0      # via jwcrypto, pyjwt, pyopenssl, rfc3161ng
@@ -56,7 +57,7 @@ fonttools==4.53.1         # via matplotlib
 fqdn==1.5.1               # via jsonschema
 gitdb==4.0.11             # via gitpython
 gitpython==3.1.43         # via nomad-lab (pyproject.toml)
-greenlet==3.0.3           # via sqlalchemy
+greenlet==3.0.3 ; (python_version < '3.13' and platform_machine == 'AMD64') or (python_version < '3.13' and platform_machine == 'WIN32') or (python_version < '3.13' and platform_machine == 'aarch64') or (python_version < '3.13' and platform_machine == 'amd64') or (python_version < '3.13' and platform_machine == 'ppc64le') or (python_version < '3.13' and platform_machine == 'win32') or (python_version < '3.13' and platform_machine == 'x86_64')  # via sqlalchemy
 griddataformats==1.0.2    # via mdanalysis
 gsd==3.3.0                # via mdanalysis
 gunicorn==21.2.0          # via nomad-lab (pyproject.toml)
@@ -117,7 +118,7 @@ optimade==0.22.1          # via nomad-lab (pyproject.toml)
 orjson==3.10.7            # via h5grove, nomad-lab (pyproject.toml)
 packaging==24.1           # via deprecation, f90wrap, gunicorn, jupyterhub, matplotlib, mdanalysis, mongomock, pint, plotly, sphinx, xarray
 palettable==3.3.3         # via pymatgen
-pamela==1.1.0             # via jupyterhub
+pamela==1.2.0 ; sys_platform != 'win32'  # via jupyterhub
 pandas==1.5.3             # via nomad-openbis, panedr, pymatgen, xarray, eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), nomad-lab (pyproject.toml)
 panedr==0.8.0             # via nomad-lab (pyproject.toml)
 parmed==4.2.2             # via nomad-lab (pyproject.toml)
@@ -127,10 +128,11 @@ pint==0.17                # via nomad-lab (pyproject.toml)
 plotly==5.23.0            # via asr, pymatgen
 prometheus-client==0.20.0  # via jupyterhub
 prompt-toolkit==3.0.47    # via click-repl
+psutil==6.0.0 ; sys_platform == 'win32'  # via jupyterhub
 pyasn1==0.6.0             # via pyasn1-modules, rfc3161ng
 pyasn1-modules==0.4.0     # via rfc3161ng
 pybtex==0.24.0            # via pymatgen
-pycparser==2.22           # via cffi
+pycparser==2.22 ; platform_python_implementation != 'PyPy'  # via cffi
 pydantic==1.10.17         # via fastapi, optimade, nomad-lab (pyproject.toml)
 pyedr==0.8.0              # via panedr
 pygments==2.18.0          # via sphinx
@@ -146,8 +148,10 @@ python-json-logger==2.0.2  # via jupyter-telemetry, nomad-lab (pyproject.toml)
 python-keycloak==4.3.0    # via nomad-lab (pyproject.toml)
 python-logstash==0.4.6    # via nomad-lab (pyproject.toml)
 python-magic==0.4.24      # via nomad-lab (pyproject.toml)
+python-magic-bin==0.4.14 ; sys_platform == 'win32'  # via nomad-lab (pyproject.toml)
 python-multipart==0.0.9   # via nomad-lab (pyproject.toml)
 pytz==2024.1              # via pandas, nomad-lab (pyproject.toml)
+pywin32==306 ; sys_platform == 'win32'  # via docker
 pyyaml==6.0.2             # via phonopy, pybtex, uvicorn, nomad-lab (pyproject.toml)
 quippy-ase==0.9.14        # via nomad-lab (pyproject.toml)
 rdflib==5.0.0             # via nomad-lab (pyproject.toml)
@@ -159,7 +163,7 @@ rfc3161ng==2.1.3          # via nomad-lab (pyproject.toml)
 rfc3339-validator==0.1.4  # via jsonschema
 rfc3987==1.3.8            # via jsonschema
 ruamel-yaml==0.18.6       # via jupyter-telemetry, oauthenticator, pymatgen
-ruamel-yaml-clib==0.2.8   # via ruamel-yaml
+ruamel-yaml-clib==0.2.8 ; python_version < '3.13' and platform_python_implementation == 'CPython'  # via ruamel-yaml
 runstats==2.0.0           # via nomad-lab (pyproject.toml)
 scikit-learn==1.5.1       # via matid, nomad-lab (pyproject.toml)
 scipy==1.14.0             # via ase, griddataformats, matid, mdanalysis, pymatgen, scikit-learn, nomad-lab (pyproject.toml)
@@ -199,12 +203,12 @@ unidecode==1.3.2          # via nomad-lab (pyproject.toml)
 uri-template==1.3.0       # via jsonschema
 urllib3==1.26.19          # via docker, elasticsearch, nomad-openbis, requests
 uvicorn==0.30.5           # via h5grove, nomad-lab (pyproject.toml)
-uvloop==0.19.0            # via uvicorn
+uvloop==0.19.0 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'  # via uvicorn
 validators==0.18.2        # via nomad-lab (pyproject.toml)
 vine==5.1.0               # via amqp, celery, kombu
 watchfiles==0.23.0        # via uvicorn
 wcwidth==0.2.13           # via prompt-toolkit
-webcolors==24.6.0         # via jsonschema
+webcolors==24.8.0         # via jsonschema
 webencodings==0.5.1       # via html5lib
 websockets==12.0          # via uvicorn
 werkzeug==3.0.3           # via flask
diff --git a/scripts/generate_python_dependencies.sh b/scripts/generate_python_dependencies.sh
index 4080f1644b890e980227e4346dc733952e37f175..eeb5d4a03b0a35486fb988129621dc5c968c4b39 100755
--- a/scripts/generate_python_dependencies.sh
+++ b/scripts/generate_python_dependencies.sh
@@ -15,14 +15,14 @@ project_dir=$(dirname $(dirname $(realpath $0)))
 cd $project_dir
 
 
-uv pip compile -U -p 3.11 --python-platform linux --annotation-style=line \
+uv pip compile -U --universal --annotation-style=line \
     --extra=infrastructure --extra=parsing \
     --output-file=requirements.txt \
     dependencies/nomad-dos-fingerprints/pyproject.toml \
     dependencies/parsers/eelsdb/pyproject.toml \
     pyproject.toml
 
-uv pip compile -U -p 3.11 --python-platform linux --annotation-style=line \
+uv pip compile -U --universal --annotation-style=line \
     --extra=dev --extra=infrastructure --extra=parsing \
     --output-file=requirements-dev.txt \
     requirements.txt \