diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b62231a5e3753ce9b9468bdd69ebce8f0cc01831..8445ba252f1b6523cb1d838ac8efe9d0e02a30aa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,5 +11,5 @@ docker-build-master:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
   script:
     - cp $ENV_FILE .env
-    - docker build --pull -t "$CI_REGISTRY_IMAGE":testcc4 .
-    - docker push "$CI_REGISTRY_IMAGE":testcc4
+    - docker build --pull -t "$CI_REGISTRY_IMAGE":prodcc4 .
+    - docker push "$CI_REGISTRY_IMAGE":prodcc4
diff --git a/Dockerfile b/Dockerfile
index d9231e2e9ff23e8ffb06f066e8dd42a8b44c8e2c..ac048da423df961de7a67fc14b92e6a0808e7f12 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,19 +5,9 @@ USER root
 COPY requirements.txt .
 RUN pip install --no-cache-dir -r requirements.txt && rm requirements.txt
 
-ENV HOME_PATH=/home/jovyan/
-
-# add the proxy for dash
-COPY dash_proxy /tmp/dash_proxy/
-RUN pip install /tmp/dash_proxy/
-
 # install some utilities for GPT
 COPY llm_utils /llm_utils/
 RUN pip install /llm_utils/
 ENV CONFIG_PATH=/home/jovyan/config.txt
 
-# copy the apps into the container
-COPY app /dash/app/
-RUN chown -R jovyan /dash/app/
-
 USER jovyan
\ No newline at end of file
diff --git a/README.md b/README.md
index ef4faa61b32056f2b8678950612ad916b456bf0e..7453bdf7b165561a9042ce4e78bf598d35bfc8e7 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1 @@
 # A Jupyterlab for LLM
-
-In order to run Dash or use the client, AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, OPENAI_API_VERSION need to be stored in a config.txt file in the home directory.
diff --git a/app/app.py b/app/app.py
deleted file mode 100644
index b43ae3ac69e2d41ac5bf45446abf5d36aa5d7996..0000000000000000000000000000000000000000
--- a/app/app.py
+++ /dev/null
@@ -1,65 +0,0 @@
-import sys 
-sys.path.append("/home/jovyan/")
-
-import argparse
-import logging
-
-from urllib.parse import urlparse, urljoin
-
-from dash import Dash
-
-from jupyter_server.serverapp import list_running_servers
-
-from layout import layout
-from callbacks import register_callbacks
-
-logging.basicConfig(level=logging.INFO)
-
-# weird trick to find base_url for the jupyterlab
-def find_jupyterlab_base_url():
-    servers = list_running_servers()
-    for server in servers:
-        if server["port"] == 8888:
-            return server['url']
-    return None
-
-
-# get the correct port from proxy
-parser = argparse.ArgumentParser()
-parser.add_argument("--port", type=int)
-args = parser.parse_args()
-port: int = args.port
-
-if not port:
-    raise ValueError(f"Port of proxy server for Dash not found in {args}.")
-else: 
-    logging.debug(f"Dash app running on port {port}.")
-
-
-base_url = find_jupyterlab_base_url()
-if base_url is None:
-    raise ValueError("Base URL of Jupyterlab could not be detected.")
-logging.debug(f"Base URL: {base_url}")
-
-proxy_base_path = urlparse(urljoin(base_url + "/", f"proxy/{port}/")).path
-logging.debug(f"Proxy base path: {proxy_base_path}")
-
-# define Dash app
-app = Dash(
-    name=__name__, 
-    requests_pathname_prefix=proxy_base_path
-)
-
-# define layout
-app.layout = layout
-
-# register all callback functions
-register_callbacks(app=app)
-
-# Run Dash app in the notebook
-app.run(
-    jupyter_mode="jupyterlab", 
-    port=port, 
-    host="0.0.0.0",
-    debug=True
-)
diff --git a/app/callbacks.py b/app/callbacks.py
deleted file mode 100644
index 207419558b566b992b8f5e4972626b00273e5a0d..0000000000000000000000000000000000000000
--- a/app/callbacks.py
+++ /dev/null
@@ -1,65 +0,0 @@
-import os
-from datetime import datetime
-
-from dash import (
-    html, 
-    Dash
-)
-from dash.dependencies import (
-    Input, 
-    Output, 
-    State
-)
-
-from llm_utils.client import ChatGPT, get_openai_client
-
-
-def format_chat_messages(chat_history):
-    chat_messages = []
-    for message in chat_history:
-        chat_messages.append(html.Div([
-            html.P(f'{message["sender"]}: {message["message"]}'),
-            html.P(f'Sent at: {message["timestamp"]}')
-        ]))
-    return chat_messages
-
-
-def register_callbacks(app: Dash):
-    model="gpt-4o"
-    client = get_openai_client(
-        model=model,
-        config_path=os.environ.get("CONFIG_PATH")
-    )
-    chat_gpt = ChatGPT(
-        client=client,
-        model=model
-    )
-    
-    @app.callback(
-        [Output('chat-container', 'children'),
-        Output('chat-history', 'data')],
-        [Input('send-button', 'n_clicks')],
-        [State('user-input', 'value'),
-        State('chat-history', 'data')]
-    )
-    def update_chat(n_clicks, input_value, chat_history):
-        if chat_history is None:
-            chat_history = []
-        
-        if n_clicks > 0 and input_value:
-            chat_history.append({
-                'sender': 'User',
-                'message': input_value,
-                'timestamp': datetime.now().strftime("%Y-%m-%d %H:%M:%S")
-            })
-            
-            response = chat_gpt.chat_with_gpt(input_value)
-            
-            # Add response to chat history
-            chat_history.append({
-                'sender': 'Language Model',
-                'message': response,
-                'timestamp': datetime.now().strftime("%Y-%m-%d %H:%M:%S")
-            })
-        
-        return format_chat_messages(chat_history), chat_history
diff --git a/app/layout.py b/app/layout.py
deleted file mode 100644
index 4d82a24710224074e9123450133daf5eefd3aac2..0000000000000000000000000000000000000000
--- a/app/layout.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from dash import (
-    html, 
-    dcc
-)
-
-layout = html.Div([
-    dcc.Store(
-        id='chat-history', 
-        data=[]
-    ),
-    html.H1(
-        "Simple Chat App", 
-        style={'text-align': 'center'}
-    ),
-    html.Div(
-        id='chat-container', 
-        style={'overflowY': 'scroll', 'height': '70vh', 'padding': '10px'}
-    ),
-    html.Div([
-        dcc.Input(
-            id='user-input', 
-            type='text', 
-            placeholder='Type your message...', 
-            debounce=True
-        ),
-        html.Button(
-            'Send', 
-            id='send-button', 
-            n_clicks=0
-        )
-    ], style={
-        'display': 'flex', 
-        'alignItems': 'center', 
-        'justifyContent': 'center', 
-        'position': 'fixed', 
-        'bottom': 0, 
-        'width': '100%', 
-        'padding': '10px'
-    })
-], style={'position': 'relative'})
diff --git a/app/my_app.py b/app/my_app.py
deleted file mode 100644
index db083be592f45c76bd6c05d3f2783614b84cfcb0..0000000000000000000000000000000000000000
--- a/app/my_app.py
+++ /dev/null
@@ -1,70 +0,0 @@
-import sys 
-sys.path.append("/home/jovyan/")
-
-import argparse
-import logging
-
-from urllib.parse import urlparse, urljoin
-
-from dash import Dash
-
-from jupyter_server.serverapp import list_running_servers
-
-try: 
-    from my_layout import layout
-    from my_callbacks import register_callbacks
-except ModuleNotFoundError:
-    # do not let Dash start
-    exit()
-
-
-logging.basicConfig(level=logging.INFO)
-
-# weird trick to find base_url for the jupyterlab
-def find_jupyterlab_base_url():
-    servers = list_running_servers()
-    for server in servers:
-        if server["port"] == 8888:
-            return server['url']
-    return None
-
-
-# get the correct port from proxy
-parser = argparse.ArgumentParser()
-parser.add_argument("--port", type=int)
-args = parser.parse_args()
-port: int = args.port
-
-if not port:
-    raise ValueError(f"Port of proxy server for Dash not found in {args}.")
-else: 
-    logging.debug(f"Dash app running on port {port}.")
-
-
-base_url = find_jupyterlab_base_url()
-if base_url is None:
-    raise ValueError("Base URL of Jupyterlab could not be detected.")
-logging.debug(f"Base URL: {base_url}")
-
-proxy_base_path = urlparse(urljoin(base_url + "/", f"proxy/{port}/")).path
-logging.debug(f"Proxy base path: {proxy_base_path}")
-
-# define Dash app
-app = Dash(
-    name=__name__, 
-    requests_pathname_prefix=proxy_base_path
-)
-
-# define layout
-app.layout = layout
-
-# register all callback functions
-register_callbacks(app=app)
-
-# Run Dash app in the notebook
-app.run(
-    jupyter_mode="jupyterlab", 
-    port=port, 
-    host="0.0.0.0",
-    debug=True
-)
diff --git a/dash_proxy/dash_proxy.py b/dash_proxy/dash_proxy.py
deleted file mode 100644
index 309e977e30e4ae08b01c6f3c3734e673b94fb444..0000000000000000000000000000000000000000
--- a/dash_proxy/dash_proxy.py
+++ /dev/null
@@ -1,16 +0,0 @@
-def setup_dash_proxy():
-    command = [
-        'python',
-        '/dash/app/app.py',
-        '--port',
-        '{port}'
-    ]
-    
-    return {
-        "command": command,
-        "new_browser_tab": False,
-        "launcher_entry": {
-            "enabled": True,
-            'title': 'Dash'
-        }
-    }
diff --git a/dash_proxy/my_app_proxy.py b/dash_proxy/my_app_proxy.py
deleted file mode 100644
index e91a8649001749f630ee85b4e6706f99049fb634..0000000000000000000000000000000000000000
--- a/dash_proxy/my_app_proxy.py
+++ /dev/null
@@ -1,16 +0,0 @@
-def setup_my_app_proxy():
-    command = [
-        'python',
-        '/dash/app/my_app.py',
-        '--port',
-        '{port}'
-    ]
-    
-    return {
-        "command": command,
-        "new_browser_tab": False,
-        "launcher_entry": {
-            "enabled": True,
-            'title': 'MyApp'
-        }
-    }
diff --git a/dash_proxy/setup.py b/dash_proxy/setup.py
deleted file mode 100644
index 437a2683b6918d9fc7b3fa6cff396ace56430117..0000000000000000000000000000000000000000
--- a/dash_proxy/setup.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import setuptools
-
-setuptools.setup(
-    author="Julian Rasch",
-    author_email="julian.rasch@fh-muenster.de",
-    description="A small module to run Dash inside a dockerized Jupyterlab.",
-    name="jupyter-dash-proxy",
-    py_modules=["dash_proxy", "my_app_proxy"],
-    entry_points={
-        "jupyter_serverproxy_servers": [
-            "Dash = dash_proxy:setup_dash_proxy",
-            "MyApp = my_app_proxy:setup_my_app_proxy"
-        ]
-    },
-    install_requires=["jupyter-server-proxy==4.4.0"],
-)
diff --git a/my_callbacks.py b/my_callbacks.py
deleted file mode 100644
index 6640c9dab08cbf2a5826a0511b78b6e03a6e215c..0000000000000000000000000000000000000000
--- a/my_callbacks.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from dash.dependencies import (
-    Input, 
-    Output
-)
-from dash import html
-
-
-def register_callbacks(app):
-    @app.callback(
-        Output('output-container-button', 'children'),
-        [Input('submit-btn', 'n_clicks')],
-        [Input('input-text', 'value')]
-    )
-    def update_output(n_clicks, input_value):
-        if n_clicks > 0:
-            return html.Div([
-                html.Label("You entered:"),
-                html.P(input_value)
-            ])
-        else:
-            return ''
diff --git a/my_layout.py b/my_layout.py
deleted file mode 100644
index e0cf7c4a9a74950db48449451e5e594fa8df9140..0000000000000000000000000000000000000000
--- a/my_layout.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from dash import html
-from dash import dcc
-
-
-layout = html.Div([
-    html.H1("Yeay, my app!"),
-    html.Div([
-        html.Label("Enter your text:"),
-        dcc.Input(id='input-text', type='text', value=''),
-        html.Button('Submit', id='submit-btn', n_clicks=0),
-    ]),
-    html.Div(id='output-container-button')
-])
diff --git a/requirements.txt b/requirements.txt
index c1570183742a586c2cc1f212c3abb57136bcaaea..ba84e22a77efc2384a5b597221872927a07ad019 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
-jupyter-server-proxy==4.4.0
+# jupyter-server-proxy==4.4.0
 
-dash
-dash-bootstrap-components
+# dash
+# dash-bootstrap-components
 flake8
 
 openai