diff --git a/apps/server/package.json b/apps/server/package.json index 171dee5..ab53ee3 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "build": "tsc -b", - "dev": "node --env-file-if-exists=.env --watch --experimental-strip-types src/index.ts", + "dev": "tsx watch --env-file-if-exists=.env src/index.ts", "start": "node --env-file-if-exists=.env dist/index.js", "seed-admin": "node --env-file-if-exists=.env scripts/seed-admin.mjs", "typecheck": "tsc --noEmit", @@ -27,6 +27,7 @@ "devDependencies": { "@types/bcrypt": "6.0.0", "@types/node": "25.9.3", + "tsx": "4.22.4", "typescript": "6.0.3" } } diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 1c3118c..7333b9c 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -9,8 +9,11 @@ export default defineConfig({ server: { port: 5173, proxy: { - "/api": "http://localhost:3000", - "/health": "http://localhost:3000", + // Use 127.0.0.1 (not "localhost") so the proxy never tries IPv6 ::1 + // first and stall — the backend binds IPv4. Avoids slow/hung requests, + // notably under WSL2 mirrored networking. + "/api": "http://127.0.0.1:3000", + "/health": "http://127.0.0.1:3000", }, }, build: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f77c999..edbe384 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,6 +60,9 @@ importers: '@types/node': specifier: 25.9.3 version: 25.9.3 + tsx: + specifier: 4.22.4 + version: 4.22.4 typescript: specifier: 6.0.3 version: 6.0.3