Files
foxhunt/web-dashboard
jgrusewski e5bf30c494 fix(web-dashboard): switch protobuf codegen to js+dts for TS 5.9 compat
TypeScript 5.9 erasableSyntaxOnly rejects enum declarations in .ts
files (they emit runtime code). Switch protoc-gen-es from target=ts
to target=js+dts which generates .js runtime + .d.ts type declarations.

Also fix type mismatches in useApi.ts (OrderSide/OrderType enum types,
StartBacktestRequest field mapping) and MLDashboard signal defaulting.
Add web-dashboard network policy for MinIO egress + proxy ingress.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:32:41 +01:00
..

web-dashboard

Foxhunt trading dashboard.

Stack

  • React 19 + TypeScript
  • Vite 7 (dev server and bundler)
  • Tailwind CSS 4
  • TradingView (lightweight-charts 5.1.0) + Recharts
  • Zustand (state) + React Query (server state, staleTime 10s, refetchInterval 15s)

Pages

  1. Trading -- Live positions, orders, market data charts
  2. Risk -- VaR, drawdown, portfolio exposure
  3. ML -- Model status, training metrics, predictions
  4. Performance -- PnL, Sharpe, execution quality
  5. Backtesting -- Strategy replay configuration and results
  6. Config -- System settings, strategy parameters

Auth

Login page with JWT authentication. ProtectedRoute guards on all pages. ErrorBoundary on every route. 401 responses trigger automatic logout.

Development

npm install
npm run dev

Dev server runs on localhost:5173 and proxies API requests to web-gateway at :3000.

Build

npm run build

Production builds disable sourcemaps and use manual chunk splitting (vendor, charts, query).

Project Structure

src/
  pages/       -- Page components (Trading, Risk, ML, etc.)
  components/  -- Shared UI components, charts, tables
  hooks/       -- React Query hooks, WebSocket hooks
  stores/      -- Zustand stores
  api/         -- API client, auth helpers
  types/       -- TypeScript type definitions