# 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

```bash
npm install
npm run dev
```

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

## Build

```bash
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
```
