# Especificaciones Técnicas - Plataforma Economía

## 1. Arquitectura Frontend

### Tecnologías Principales
- **Framework**: React 18.2+
- **Lenguaje**: TypeScript 5.0+
- **Styling**: Tailwind CSS 3.4+
- **Build Tool**: Vite 5.0+
- **Package Manager**: npm

### Dependencias Clave
```json
{
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router-dom": "^6.20.0",
    "d3": "^7.8.0",
    "recharts": "^2.10.0",
    "zustand": "^4.4.0",
    "lucide-react": "^0.294.0",
    "framer-motion": "^10.16.0"
  }
}
```

## 2. Componentes Interactivos Planificados

### 2.1 GraficoCurva (Módulos 2, 3, 4)
```typescript
interface GraficoCurvaProps {
  tipo: 'oferta' | 'demanda' | 'equilibrio' | 'costos';
  datos: Punto[];
  interactivo: boolean;
  onPuntoClick?: (punto: Punto) => void;
}
```

### 2.2 SimuladorPrecios (Módulo 2)
- Sliders para ajustar curvas
- Visualización de excedentes
- Animaciones de transición

### 2.3 CalculadoraElasticidad (Módulo 3)
- Inputs para valores Q1, Q2, P1, P2
- Cálculo automático con fórmula
- Visualización del resultado

### 2.4 JuegoFlujoCircular (Módulo 1)
- Drag & drop de elementos
- Conexiones entre agentes económicos
- Validación de respuestas

## 3. Estructura de Estado

```typescript
interface AppState {
  progreso: {
    modulo1: { completado: number; ejercicios: boolean[] };
    modulo2: { completado: number; ejercicios: boolean[] };
    modulo3: { completado: number; ejercicios: boolean[] };
    modulo4: { completado: number; ejercicios: boolean[] };
  };
  usuario: {
    nombre: string;
    puntuacion: number;
    logros: string[];
  };
  preferencias: {
    modoOscuro: boolean;
    notificaciones: boolean;
  };
}
```

## 4. Configuración Docker

### Dockerfile
```dockerfile
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
```

### docker-compose.yml
```yaml
version: '3.8'
services:
  econ-learning:
    build: .
    ports:
      - "3000:80"
    restart: unless-stopped
```

## 5. Rutas de la Aplicación

```
/                    → Landing page
/modulos             → Lista de módulos
/modulo/1            → Módulo 1: Fundamentos
/modulo/2            → Módulo 2: Oferta/Demanda
/modulo/3            → Módulo 3: Elasticidad
/modulo/4            → Módulo 4: Productor
/ejercicios/:id      → Ejercicio específico
/progreso            → Dashboard de progreso
```

## 6. Diseño UI/UX

### Paleta de Colores
- Primary: #2563eb (Azul)
- Secondary: #7c3aed (Violeta)
- Success: #10b981 (Verde)
- Warning: #f59e0b (Naranja)
- Error: #ef4444 (Rojo)
- Background: #f8fafc (Gris claro)
- Surface: #ffffff (Blanco)

### Tipografía
- **Headings**: Inter, 600-700 weight
- **Body**: Inter, 400 weight
- **Monospace**: JetBrains Mono (para fórmulas)

### Breakpoints
- Mobile: < 640px
- Tablet: 640px - 1024px
- Desktop: > 1024px

## 7. Optimizaciones Planificadas

### Performance
- Lazy loading de módulos
- Code splitting por ruta
- Virtualización de listas largas
- Caché de assets con service worker

### Accesibilidad
- ARIA labels en elementos interactivos
- Soporte para navegación por teclado
- Contraste WCAG AA
- Screen reader compatible

## 8. Testing Strategy

### Unit Tests (Vitest)
- Lógica de cálculos económicos
- Hooks personalizados
- Utilidades

### Integration Tests (React Testing Library)
- Flujo de navegación
- Interacción con gráficos
- Formularios

### E2E Tests (Playwright)
- Rutas críticas
- Ejercicios completos
- Persistencia de datos
