From 99348e0650f1411e812520178e953ea7b445078a Mon Sep 17 00:00:00 2001 From: Lukas May Date: Wed, 4 Feb 2026 17:10:15 +0100 Subject: [PATCH] feat(16-01): create Vite + React + TypeScript project - packages/web/ with Vite dev server, React 19, TypeScript - Server proxy /trpc -> http://127.0.0.1:3847 for CORS-free dev - Root npm workspaces configured (packages/*) - dev:web script for workspace dev server --- package.json | 4 +++- packages/web/index.html | 12 ++++++++++++ packages/web/package.json | 23 +++++++++++++++++++++++ packages/web/src/App.tsx | 5 +++++ packages/web/src/index.css | 11 +++++++++++ packages/web/src/main.tsx | 9 +++++++++ packages/web/tsconfig.app.json | 21 +++++++++++++++++++++ packages/web/tsconfig.json | 6 ++++++ packages/web/vite.config.ts | 14 ++++++++++++++ 9 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 packages/web/index.html create mode 100644 packages/web/package.json create mode 100644 packages/web/src/App.tsx create mode 100644 packages/web/src/index.css create mode 100644 packages/web/src/main.tsx create mode 100644 packages/web/tsconfig.app.json create mode 100644 packages/web/tsconfig.json create mode 100644 packages/web/vite.config.ts diff --git a/package.json b/package.json index 0d76a6e..67bf643 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.0.1", "description": "Multi-agent workspace for orchestrating multiple Claude Code agents", "type": "module", + "workspaces": ["packages/*"], "main": "./dist/index.js", "bin": { "cw": "./dist/bin/cw.js" @@ -13,7 +14,8 @@ "clean": "rimraf dist", "test": "vitest run", "test:watch": "vitest", - "test:coverage": "vitest run --coverage" + "test:coverage": "vitest run --coverage", + "dev:web": "npm run dev --workspace=packages/web" }, "keywords": [ "claude", diff --git a/packages/web/index.html b/packages/web/index.html new file mode 100644 index 0000000..35628f3 --- /dev/null +++ b/packages/web/index.html @@ -0,0 +1,12 @@ + + + + + + Codewalk District + + +
+ + + diff --git a/packages/web/package.json b/packages/web/package.json new file mode 100644 index 0000000..cd4f8ab --- /dev/null +++ b/packages/web/package.json @@ -0,0 +1,23 @@ +{ + "name": "@codewalk-district/web", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview", + "lint": "tsc --noEmit" + }, + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "@vitejs/plugin-react": "^4.3.4", + "typescript": "^5.7.3", + "vite": "^6.1.0" + } +} diff --git a/packages/web/src/App.tsx b/packages/web/src/App.tsx new file mode 100644 index 0000000..4550639 --- /dev/null +++ b/packages/web/src/App.tsx @@ -0,0 +1,5 @@ +function App() { + return
Codewalk District
; +} + +export default App; diff --git a/packages/web/src/index.css b/packages/web/src/index.css new file mode 100644 index 0000000..ad774aa --- /dev/null +++ b/packages/web/src/index.css @@ -0,0 +1,11 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; +} + +body { + margin: 0; + min-width: 320px; + min-height: 100vh; +} diff --git a/packages/web/src/main.tsx b/packages/web/src/main.tsx new file mode 100644 index 0000000..77d159f --- /dev/null +++ b/packages/web/src/main.tsx @@ -0,0 +1,9 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App"; + +createRoot(document.getElementById("root")!).render( + + + +); diff --git a/packages/web/tsconfig.app.json b/packages/web/tsconfig.app.json new file mode 100644 index 0000000..39a405b --- /dev/null +++ b/packages/web/tsconfig.app.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json new file mode 100644 index 0000000..426eda2 --- /dev/null +++ b/packages/web/tsconfig.json @@ -0,0 +1,6 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" } + ] +} diff --git a/packages/web/vite.config.ts b/packages/web/vite.config.ts new file mode 100644 index 0000000..c502a33 --- /dev/null +++ b/packages/web/vite.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + plugins: [react()], + server: { + proxy: { + "/trpc": { + target: "http://127.0.0.1:3847", + changeOrigin: true, + }, + }, + }, +});