diff --git a/apps/desktop/electron.vite.config.ts b/apps/desktop/electron.vite.config.ts
index 2c3d00a889..350708fb1a 100644
--- a/apps/desktop/electron.vite.config.ts
+++ b/apps/desktop/electron.vite.config.ts
@@ -1,26 +1,41 @@
import { resolve } from "path";
import { defineConfig, externalizeDepsPlugin } from "electron-vite";
+import { loadEnv } from "vite";
import react from "@vitejs/plugin-react";
import tailwindcss from "@tailwindcss/vite";
-export default defineConfig({
- main: {
- plugins: [externalizeDepsPlugin()],
- },
- preload: {
- plugins: [externalizeDepsPlugin()],
- },
- renderer: {
- server: {
- port: 5173,
- strictPort: true,
+export default defineConfig(({ mode }) => {
+ const env = loadEnv(mode, process.cwd(), "");
+ const remoteApi = env.VITE_REMOTE_API;
+ const remoteWs = remoteApi?.replace(/^https/, "wss").replace(/^http/, "ws");
+
+ return {
+ main: {
+ plugins: [externalizeDepsPlugin()],
},
- plugins: [react(), tailwindcss()],
- resolve: {
- alias: {
- "@": resolve("src/renderer/src"),
+ preload: {
+ plugins: [externalizeDepsPlugin()],
+ },
+ renderer: {
+ server: {
+ port: 5173,
+ strictPort: true,
+ ...(remoteApi && {
+ proxy: {
+ "/api": { target: remoteApi, changeOrigin: true },
+ "/auth": { target: remoteApi, changeOrigin: true },
+ "/uploads": { target: remoteApi, changeOrigin: true },
+ "/ws": { target: remoteWs, changeOrigin: true, ws: true },
+ },
+ }),
+ },
+ plugins: [react(), tailwindcss()],
+ resolve: {
+ alias: {
+ "@": resolve("src/renderer/src"),
+ },
+ dedupe: ["react", "react-dom"],
},
- dedupe: ["react", "react-dom"],
},
- },
+ };
});
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index 788e95d388..63f66dd7dd 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -5,6 +5,7 @@
"main": "./out/main/index.js",
"scripts": {
"dev": "electron-vite dev",
+ "dev:remote": "electron-vite dev --mode remote",
"build": "electron-vite build",
"typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false",
"typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false",
diff --git a/apps/desktop/src/renderer/src/App.tsx b/apps/desktop/src/renderer/src/App.tsx
index d8fa988a68..23bdd0fb8d 100644
--- a/apps/desktop/src/renderer/src/App.tsx
+++ b/apps/desktop/src/renderer/src/App.tsx
@@ -39,12 +39,14 @@ function AppContent() {
return ;
}
+const remoteProxy = Boolean(import.meta.env.VITE_REMOTE_API);
+
export default function App() {
return (
diff --git a/package.json b/package.json
index 3b6e4272e6..e8aaa13381 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"scripts": {
"dev:web": "turbo dev --filter=@multica/web",
"dev:desktop": "turbo dev --filter=@multica/desktop",
+ "dev:desktop:remote": "pnpm --filter @multica/desktop dev:remote",
"build": "turbo build",
"typecheck": "turbo typecheck",
"test": "turbo test",