# Trading Platform Frontend

Aplicacion web frontend para Trading Platform.

## Stack Tecnologico

- **Framework:** React 18
- **Build Tool:** Vite 6
- **Lenguaje:** TypeScript 5.x
- **Estilos:** TailwindCSS 3.4
- **Estado:** Zustand + React Query
- **Forms:** React Hook Form + Zod
- **Charts:** Recharts + Lightweight Charts
- **Icons:** Heroicons + Lucide React

## Estructura del Proyecto

```
src/
├── components/       # Componentes reutilizables
│   ├── ui/           # Componentes UI base
│   ├── charts/       # Graficos y visualizaciones
│   ├── forms/        # Componentes de formulario
│   └── layout/       # Layout components
├── hooks/            # Custom React hooks
├── modules/          # Modulos de negocio
│   ├── auth/         # Autenticacion
│   ├── dashboard/    # Dashboard principal
│   ├── trading/      # Trading interface
│   ├── portfolio/    # Gestion de portfolios
│   └── education/    # Modulo educativo
├── services/         # API clients y servicios
├── stores/           # Zustand stores
├── styles/           # Estilos globales
├── types/            # TypeScript types
├── App.tsx           # Componente raiz
└── main.tsx          # Entry point
```

## Instalacion

```bash
# Instalar dependencias
npm install

# Copiar variables de entorno
cp .env.example .env
```

## Variables de Entorno

```env
# API Backend
VITE_API_URL=http://localhost:3000/api/v1
VITE_WS_URL=ws://localhost:3000/ws

# Stripe (public key)
VITE_STRIPE_PUBLIC_KEY=pk_test_xxx

# Feature flags
VITE_ENABLE_ML_DASHBOARD=true
VITE_ENABLE_TRADING=true
```

## Scripts Disponibles

| Script | Descripcion |
|--------|-------------|
| `npm run dev` | Servidor desarrollo (Vite) |
| `npm run build` | Build produccion |
| `npm run preview` | Preview build local |
| `npm run lint` | Verificar codigo ESLint |
| `npm run test` | Ejecutar tests (Vitest) |
| `npm run typecheck` | Verificar tipos TypeScript |

## Desarrollo

```bash
# Iniciar servidor desarrollo
npm run dev

# Abrir en navegador
# http://localhost:5173
```

## Componentes Principales

### Dashboard
- Overview de portfolio
- Graficos de rendimiento
- Senales ML activas

### Trading
- Interfaz de ordenes
- Graficos en tiempo real (TradingView style)
- Order book y historial

### Portfolio
- Distribucion de assets
- Historial de transacciones
- Metricas de rendimiento

### ML Dashboard
- Predicciones activas
- Metricas de modelos
- Historial de senales

## Estado Global (Zustand)

```typescript
// stores/authStore.ts
const useAuthStore = create((set) => ({
  user: null,
  token: null,
  login: (user, token) => set({ user, token }),
  logout: () => set({ user: null, token: null }),
}));

// stores/tradingStore.ts
const useTradingStore = create((set) => ({
  orders: [],
  positions: [],
  // ...
}));
```

## API Client (React Query)

```typescript
// services/api.ts
import { useQuery, useMutation } from '@tanstack/react-query';

export const useUser = () => useQuery({
  queryKey: ['user'],
  queryFn: fetchUser,
});

export const useCreateOrder = () => useMutation({
  mutationFn: createOrder,
});
```

## Testing

```bash
# Ejecutar tests
npm run test

# Tests con UI
npm run test:ui

# Coverage
npm run test:coverage
```

## Build y Deploy

```bash
# Build produccion
npm run build

# Output en dist/
ls dist/
```

### Docker

```bash
# Build imagen
docker build -t trading-frontend .

# Ejecutar con nginx
docker run -p 80:80 trading-frontend
```

## Configuracion Nginx

Ver `nginx.conf` para configuracion de produccion con:
- Compresion gzip
- Cache de assets estaticos
- SPA fallback routing
- Security headers

## Documentacion Relacionada

- [Documentacion de Modulos](../../docs/02-definicion-modulos/)
- [Inventario Frontend](../../docs/90-transversal/inventarios/FRONTEND_INVENTORY.yml)
- [ML Dashboard Implementation](./ML_DASHBOARD_IMPLEMENTATION.md)

---

**Proyecto:** Trading Platform
**Version:** 0.1.0
**Actualizado:** 2026-01-07
