This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
pnpm install # install all dependencies (root + workspaces)
pnpm dev # run both server and web in parallel (hot-reload)
pnpm build # build both packages
# Individual packages
cd server && pnpm dev # server only (tsx watch, port 8787)
cd web && pnpm dev # frontend only (Vite, port 5173)No test runner is configured yet.
Monorepo (pnpm workspaces): server/ and web/.
- Entry:
src/index.ts— Express app, mounts/chatand/chat/streamroutes - Routes:
src/routes/chat.ts(JSON response) andsrc/routes/chat-stream.ts(SSE response) - Request flow: auth guard → system prompt merge → model router → provider call → response
- Core modules:
core/auth.ts— validates user + balance via mock DBcore/router.ts— selects model based on input (explicit model, tool-call heuristic, context length, or default)core/provider.ts— calls OpenAI-compatible API (usesopenaiSDK)core/sse.ts— SSE event formatting helperscore/prompt.ts— system prompt + tool definitionscore/logger.ts— structured request logging (latency, tokens, trace_id)
- Mock data:
src/mock/db.ts— hardcoded users (u_001active/pro,u_003inactive/zero-balance) - Config:
server/.env(copy from.env.example); requiresLLM_API_KEY, optionalLLM_BASE_URL
- Single-component app:
src/App.tsxhandles chat UI with incremental SSE rendering src/api.ts— API client with SSE stream parsersrc/types.ts— shared TypeScript types