diff --git a/backend/Dockerfile b/backend/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..6d0556067a3d3f3aac08f1645ae679c46aade1d9
--- /dev/null
+++ b/backend/Dockerfile
@@ -0,0 +1,29 @@
+# Verwende das neueste Python-Image
+FROM python:latest
+
+# Setze das Arbeitsverzeichnis im Container
+WORKDIR /app
+
+# Kopiere die pyproject.toml und uv.lock-Dateien
+COPY pyproject.toml .
+COPY uv.lock .
+
+# Kopiere auch requirements.txt, falls vorhanden
+COPY requirements.txt .
+
+# Installiere uv und die Abhängigkeiten
+RUN pip install --upgrade pip && \
+    pip install uv && \
+    pip install --no-cache-dir -r requirements.txt
+
+# Kopiere den Rest des Projekts in den Container
+COPY . .
+
+# Setze Umgebungsvariablen, falls nötig
+ENV PYTHONUNBUFFERED 1
+
+# Exponiere den Port 8000 für den Server
+EXPOSE 8000
+
+# Der Startbefehl: Starte den Server mit uv
+CMD ["uv", "run", "python", "manage.py", "runserver", "0.0.0.0:8000"]
diff --git a/backend/app/views.py b/backend/app/views.py
index 4aeec7f4fa2a084512d00f9d298b0a4c56ba1c3d..7bff2a9e70abf3f8e6590ac58906a1dcaa551079 100644
--- a/backend/app/views.py
+++ b/backend/app/views.py
@@ -32,7 +32,7 @@ def login_view(request):
     user = authenticate(request, username=email, password=password)
 
     if user:
-        login(request, user)
+        login(request, user) # also creates a session in the browser
         return JsonResponse({"success": True})
     return JsonResponse(
         {"success": False, "message": "Invalid credentials"}, status=401
@@ -40,7 +40,7 @@ def login_view(request):
 
 
 def logout_view(request):
-    logout(request)
+    logout(request) 
     return JsonResponse({"message": "Logged out"})
 
 
diff --git a/backend/core/urls.py b/backend/core/urls.py
index 8e18b6fa40ad248ce188e6b17bf9fd7da01e8819..8d12f2b65075ac542493d4e5bd15b8d644b03734 100644
--- a/backend/core/urls.py
+++ b/backend/core/urls.py
@@ -20,5 +20,5 @@ from django.urls import path, include
 
 urlpatterns = [
     path("admin/", admin.site.urls),
-    path("", include("sim.urls")),
+    path("", include("app.urls")),
 ]
diff --git a/backend/requirements.txt b/backend/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f7b96d0262a80c5d79eea5977842ac8852927521
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,18 @@
+version: '3.9'
+
+services:
+  backend:
+    build: ./backend
+    ports:
+      - "8000:8000"
+    volumes:
+      - ./backend:/app
+
+  frontend:
+    build: ./frontend
+    ports:
+      - "5173:5173"
+    volumes:
+      - ./frontend:/app
+    stdin_open: true
+    tty: true
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..7e7ab9140b17abd8223d07a5b3c8ac7d321981f2
--- /dev/null
+++ b/frontend/Dockerfile
@@ -0,0 +1,13 @@
+# frontend/Dockerfile
+
+FROM node:20
+WORKDIR /app
+
+# Nur lokale Abhängigkeiten, kein globales Vite!
+COPY package*.json ./
+RUN npm install
+
+COPY . .
+
+EXPOSE 5173
+CMD ["npx", "vite", "--host"]