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,
+ },
+ },
+ },
+});