diff --git a/backend/app/main.py b/backend/app/main.py
index 779027522cbd9d75654256ae08b765c7f19b0a35..77c75c3ba95804278468ad1c7d5b97177c50f1d5 100644
--- a/backend/app/main.py
+++ b/backend/app/main.py
@@ -65,7 +65,7 @@ app.add_middleware(
     allow_headers=["*"],
 )
 
-apiRouter = APIRouter(prefix="/api")
+apiRouter = APIRouter(prefix="/tmp-api")
 v1Router = APIRouter(prefix="/v1")
 authRouter = APIRouter(prefix="/auth", tags=["auth"])
 usersRouter = APIRouter(prefix="/users", tags=["users"])
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 747c14f5d1162a831c36f787d51a0519460693f6..b2cc191ad6123f4d03f0589f22f17b5ca7733392 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -11,6 +11,7 @@ services:
       - external
     labels:
       - "traefik.enable=true"
+      #- "traefik.http.routers.frontend.rule=Host(`languagelab.be`)"
       - "traefik.http.routers.frontend.rule=Host(`languagelab.sipr.ucl.ac.be`)"
       - "traefik.http.routers.frontend.tls=true"
       - "traefik.http.services.frontend.loadbalancer.server.port=8080"
@@ -25,7 +26,7 @@ services:
       - ADMIN_EMAIL=${LANGUAGELAB_ADMIN_EMAIL}
       - ADMIN_PASSWORD=${LANGUAGELAB_ADMIN_PASSWORD}
       - CALCOM_SECRET=${LANGUAGELAB_CALCOM_SECRET}
-      - ALLOWED_ORIGINS=https://languagelab.sipr.ucl.ac.be
+      - ALLOWED_ORIGINS=https://languagelab.be,https://api.languagelab.be
     volumes:
       - /mnt/data/languagelab/backend:/data
       - /etc/timezone:/etc/timezone:ro
@@ -36,7 +37,8 @@ services:
       - "traefik.enable=true"
       - "traefik.http.routers.backend.tls=true"
       - "traefik.http.services.backend.loadbalancer.server.port=8000"
-      - "traefik.http.routers.backend.rule=Host(`languagelab.sipr.ucl.ac.be`) && (PathPrefix(`/api`) || PathPrefix(`/docs`) || PathPrefix(`/openapi.json`))"
+      #- "traefik.http.routers.backend.rule=Host(`languagelab.be`) && (PathPrefix(`/tmp-api`) || PathPrefix(`/docs`) || PathPrefix(`/openapi.json`))"
+      - "traefik.http.routers.backend.rule=Host(`languagelab.sipr.ucl.ac.be`) && (PathPrefix(`/tmp-api`) || PathPrefix(`/docs`) || PathPrefix(`/openapi.json`))"
 
   traefik:
     container_name: traefik
diff --git a/frontend/global.d.ts b/frontend/global.d.ts
index a95b876fb3ba6672a0f5894ff637a90596fae63e..f7cd09ecb59d8b189fd915bec97fc024d878496a 100644
--- a/frontend/global.d.ts
+++ b/frontend/global.d.ts
@@ -6,3 +6,9 @@ declare module 'emoji-picker-element';
 interface ImportMetaEnv {
 	VITE_API_URL: string;
 }
+
+declare global {
+	interface RequestInit {
+		duplex?: string;
+	}
+}
diff --git a/frontend/package.json b/frontend/package.json
index bb074c8ddc03fa17101e259c2ada4cd270d7a952..f0a6699c0906ebda811bc04399f5a5c11e28fc23 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -3,7 +3,7 @@
 	"version": "0.0.1",
 	"private": true,
 	"scripts": {
-		"dev": "VITE_API_URL=http://127.0.0.1:5173/api VITE_APP_URL=http://127.0.0.1:5173 VITE_WS_URL=ws://127.0.0.1:8000/api/v1/ws vite dev --host 127.0.0.1",
+		"dev": "VITE_API_URL=http://127.0.0.1:8000/tmp-api VITE_APP_URL=http://127.0.0.1:5173 VITE_WS_URL=ws://127.0.0.1:8000/tmp-api/v1/ws vite dev --host 127.0.0.1",
 		"build": "vite build",
 		"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
 		"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
diff --git a/frontend/src/hooks.server.ts b/frontend/src/hooks.server.ts
index 1d4d7ef276af03dc34685951d50613380d57b6be..a600a1477718c95d14a2826ff68c48e8ef9546bb 100644
--- a/frontend/src/hooks.server.ts
+++ b/frontend/src/hooks.server.ts
@@ -1,20 +1,27 @@
 import { type Handle, type RequestEvent } from '@sveltejs/kit';
 import { jwtDecode } from 'jwt-decode';
 import { type JWTContent } from '$lib/utils/login';
+import config from '$lib/config';
 
-const API_BASE_URL = 'http://127.0.0.1:8000/api/v1';
 const PROXY_PATH = '/api';
 
 const handleApiProxy = async (event: RequestEvent, cookies: { name: string; value: string }[]) => {
 	const strippedPath = event.url.pathname.substring(PROXY_PATH.length);
 
-	const urlPath = `${API_BASE_URL}${strippedPath}${event.url.search}`;
+	console.log('redirect to ', `${config.API_URL}/v1${strippedPath}${event.url.search}`);
+	const urlPath = `${config.API_URL}/v1${strippedPath}${event.url.search}`;
 	const proxiedUrl = new URL(urlPath);
 
 	event.request.headers.delete('connection');
 	event.request.headers.set('cookie', cookies.map((c) => `${c.name}=${c.value}`).join('; '));
 
-	return event.fetch(proxiedUrl.toString(), event.request).catch((err: any) => {
+	return fetch(proxiedUrl.toString(), {
+		body: event.request.body,
+		method: event.request.method,
+		headers: event.request.headers,
+		// @ts-ignore: Duplex is missing
+		duplex: 'half'
+	}).catch((err: any) => {
 		console.log('Could not proxy API request: ', err);
 		throw err;
 	});
@@ -28,6 +35,7 @@ export const handle: Handle = async ({ event, resolve }) => {
 	const cookies = event.cookies.getAll();
 
 	if (event.url.pathname.startsWith(PROXY_PATH)) {
+		console.log(event.url.pathname);
 		return await handleApiProxy(event, cookies);
 	}
 
diff --git a/frontend/src/lib/config.ts b/frontend/src/lib/config.ts
index ca3b4dd92665f41385f9f1ca930157bf3db87ca8..9e42973b0172395b77e8683ab8fc9aa2976f0e85 100644
--- a/frontend/src/lib/config.ts
+++ b/frontend/src/lib/config.ts
@@ -1,8 +1,16 @@
 export default {
-	API_URL: import.meta.env.VITE_API_URL || 'https://languagelab.sipr.ucl.ac.be/api',
-	API_PROXY: import.meta.env.VITE_API_PROXY || 'https://languagelab.sipr.ucl.ac.be:8000',
-	APP_URL: import.meta.env.VITE_APP_URL || 'https://languagelab.sipr.ucl.ac.be',
-	WS_URL: import.meta.env.VITE_WS_URL || 'wss://languagelab.sipr.ucl.ac.be/api/v1/ws',
+	API_URL: import.meta.env.VITE_API_URL || 'https://languagelab.sipr.ucl.ac.be/tmp-api',
+	API_PROXY: import.meta.env.VITE_API_PROXY || 'https://languagelab.sipr.ucl.ac.be/tmp-api',
+	APP_URL: import.meta.env.VITE_APP_URL || 'https://languagelab.be',
+	WS_URL: import.meta.env.VITE_WS_URL || 'wss://languagelab.sipr.ucl.ac.be/tmp-api/v1/ws',
+	//API_URL: import.meta.env.VITE_API_URL || 'https://languagelab.be/tmp-api',
+	//API_PROXY: import.meta.env.VITE_API_PROXY || 'https://languagelab.be/tmp-api',
+	//WS_URL: import.meta.env.VITE_WS_URL || 'wss://languagelab.be/tmp-api/v1/ws',
+	//
+	//API_URL: import.meta.env.VITE_API_URL || 'https://api.languagelab.be/api',
+	//API_PROXY: import.meta.env.VITE_API_PROXY || 'https://api.languagelab.be',
+	//WS_URL: import.meta.env.VITE_WS_URL || 'wss://api.languagelab.be/api/v1/ws',
+	//
 	// 1 week - 2 hours
 	WEEKLY_SURVEY_INTERVAL: (7 * 24 - 2) * 60 * 60 * 1000,
 	LEARNING_LANGUAGES: {
diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js
index a29c48b71615a48d5c3db81aec7f02b400927022..0bf64d1623f87010e0a26ac50a5b6c30754ede4b 100644
--- a/frontend/tailwind.config.js
+++ b/frontend/tailwind.config.js
@@ -1,4 +1,5 @@
-/** @type {import('tailwindcss').Config} */
+import daisyui from 'daisyui';
+
 export default {
 	content: ['./src/**/*.{html,js,svelte,ts}'],
 	theme: {
@@ -8,7 +9,7 @@ export default {
 			}
 		}
 	},
-	plugins: [require('daisyui')],
+	plugins: [daisyui],
 	daisyui: {
 		themes: [
 			'bumblebee',