diff --git a/backend/migration_reset.py b/backend/migration_reset.py
index 4f674c75ecff4e31ccf744818978580270e4ef48..79281ba19d963b8d10755c6d8f52d84df2689f12 100644
--- a/backend/migration_reset.py
+++ b/backend/migration_reset.py
@@ -1,4 +1,4 @@
-from sqlalchemy import exc
+from sqlalchemy import exc, text
 
 from database import db
 import logging
@@ -17,7 +17,7 @@ def reset():
     logging.info("Checking if alembic version needs to be reset.")
     version = None
     try:
-        result = db.session.execute("select version_num from alembic_version")
+        result = db.session.execute(text("select version_num from alembic_version"))
         for row in result:
             version = row[0]
     except exc.ProgrammingError:
diff --git a/backend/requirements.in b/backend/requirements.in
new file mode 100644
index 0000000000000000000000000000000000000000..6404b52f49ca6219588b8609fb10adac559f910b
--- /dev/null
+++ b/backend/requirements.in
@@ -0,0 +1,23 @@
+APScheduler==3.9.1
+# CLI creation kit
+click==8.1.7
+Flask==3.0.3
+# Flask-Cors==3.0.10
+# flask-expects-json==1.7.0
+Flask-JWT-Extended==4.6.0
+# Flask-Migrate==4.0.1
+Flask-SQLAlchemy==3.1.1
+# jsonschema==4.4.0
+# Jinja2==3.0.3
+# jinja2-base64-filters==0.1.4
+kubernetes==24.2.0
+pymysql==1.0.2
+NamedAtomicLock==1.1.3
+ory-kratos-client==1.0.0
+ory-hydra-client==1.11.8
+pip-install==1.3.5
+posix-ipc==1.1.1
+PyYAML==6.0.1
+regex==2022.3.15
+requests==2.27.1
+requests-oauthlib==1.3.1
diff --git a/backend/requirements.txt b/backend/requirements.txt
index 931b8284110a1bd3154e6da8cfdc8a177bd47c22..576d3f8508887bdb05694cb355f3a3e1910a5944 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -1,44 +1,119 @@
-APScheduler==3.9.1
-attrs==21.4.0
-black==22.1.0
-certifi==2021.10.8
-cffi==1.15.0
+#
+# This file is autogenerated by pip-compile with Python 3.12
+# by the following command:
+#
+#    pip-compile --no-emit-index-url --output-file=requirements.txt --strip-extras requirements.in
+#
+apscheduler==3.9.1
+    # via -r requirements.in
+blinker==1.8.2
+    # via flask
+cachetools==5.5.0
+    # via google-auth
+certifi==2024.7.4
+    # via
+    #   kubernetes
+    #   requests
 charset-normalizer==2.0.12
-click==8.0.4
-cryptography==36.0.2
-Flask==2.0.3
-Flask-Cors==3.0.10
-flask-expects-json==1.7.0
-Flask-JWT-Extended==4.3.1
-Flask-Migrate==4.0.1
-Flask-SQLAlchemy==2.5.1
-gunicorn==20.1.0
-idna==3.3
-pip-install==1.3.5
-itsdangerous==2.1.1
-jsonschema==4.4.0
-Jinja2==3.0.3
-jinja2-base64-filters==0.1.4
+    # via requests
+click==8.1.7
+    # via
+    #   -r requirements.in
+    #   flask
+flask==3.0.3
+    # via
+    #   -r requirements.in
+    #   flask-jwt-extended
+    #   flask-sqlalchemy
+flask-jwt-extended==4.6.0
+    # via -r requirements.in
+flask-sqlalchemy==3.1.1
+    # via -r requirements.in
+google-auth==2.34.0
+    # via kubernetes
+greenlet==3.0.3
+    # via sqlalchemy
+idna==3.7
+    # via requests
+itsdangerous==2.2.0
+    # via flask
+jinja2==3.1.4
+    # via flask
 kubernetes==24.2.0
-MarkupSafe==2.1.1
-mypy-extensions==0.4.3
-NamedAtomicLock==1.1.3
-oauthlib==3.2.0
-ory-kratos-client==1.0.0
+    # via -r requirements.in
+markupsafe==2.1.5
+    # via
+    #   jinja2
+    #   werkzeug
+namedatomiclock==1.1.3
+    # via -r requirements.in
+oauthlib==3.2.2
+    # via requests-oauthlib
 ory-hydra-client==1.11.8
-pathspec==0.9.0
-platformdirs==2.5.1
+    # via -r requirements.in
+ory-kratos-client==1.0.0
+    # via -r requirements.in
+pip-install==1.3.5
+    # via -r requirements.in
 posix-ipc==1.1.1
-pycparser==2.21
-PyJWT==2.3.0
+    # via -r requirements.in
+pyasn1==0.6.0
+    # via
+    #   pyasn1-modules
+    #   rsa
+pyasn1-modules==0.4.0
+    # via google-auth
+pyjwt==2.9.0
+    # via flask-jwt-extended
 pymysql==1.0.2
-pyrsistent==0.18.1
-PyYAML==6.0.1
+    # via -r requirements.in
+python-dateutil==2.9.0.post0
+    # via
+    #   kubernetes
+    #   ory-hydra-client
+    #   ory-kratos-client
+pytz==2024.1
+    # via apscheduler
+pyyaml==6.0.1
+    # via
+    #   -r requirements.in
+    #   kubernetes
 regex==2022.3.15
+    # via -r requirements.in
 requests==2.27.1
+    # via
+    #   -r requirements.in
+    #   kubernetes
+    #   requests-oauthlib
 requests-oauthlib==1.3.1
+    # via
+    #   -r requirements.in
+    #   kubernetes
+rsa==4.9
+    # via google-auth
 six==1.16.0
-tomli==1.2.3
-typing-extensions==4.1.1
-urllib3==1.26.8
-Werkzeug==2.0.3
+    # via
+    #   apscheduler
+    #   kubernetes
+    #   python-dateutil
+sqlalchemy==2.0.32
+    # via flask-sqlalchemy
+typing-extensions==4.12.2
+    # via sqlalchemy
+tzlocal==5.2
+    # via apscheduler
+urllib3==1.26.19
+    # via
+    #   kubernetes
+    #   ory-hydra-client
+    #   ory-kratos-client
+    #   requests
+websocket-client==1.8.0
+    # via kubernetes
+werkzeug==3.0.3
+    # via
+    #   flask
+    #   flask-jwt-extended
+
+# The following packages are considered to be unsafe in a requirements file:
+# setuptools