# Frontend - ERP Mecanicas Diesel

## Stack Tecnologico

| Tecnologia | Version | Proposito |
|------------|---------|-----------|
| React | 18.x | Framework UI |
| Vite | 6.x | Build tool |
| TypeScript | 5.x | Lenguaje |
| React Router | 6.x | Routing |
| Zustand | 5.x | State management |
| React Query | 5.x | Data fetching/caching |
| Tailwind CSS | 3.x | Styling |
| React Hook Form | 7.x | Formularios |
| Zod | 3.x | Validacion |
| Axios | 1.x | HTTP client |
| Lucide React | - | Iconos |

## Estructura del Proyecto

```
src/
├── components/
│   ├── common/              # Componentes reutilizables (Button, Input, etc)
│   ├── layout/              # Layout principal (Sidebar, Header, MainLayout)
│   └── features/            # Componentes especificos por modulo
├── features/                # Logica por modulo/epic
│   ├── auth/               # Autenticacion
│   ├── service-orders/     # MMD-002: Ordenes de servicio
│   ├── diagnostics/        # MMD-003: Diagnosticos
│   ├── inventory/          # MMD-004: Inventario
│   ├── vehicles/           # MMD-005: Vehiculos
│   ├── quotes/             # MMD-006: Cotizaciones
│   └── settings/           # MMD-001: Configuracion
├── store/                   # Zustand stores
│   ├── authStore.ts        # Estado de autenticacion
│   └── tallerStore.ts      # Estado del taller
├── services/
│   └── api/                # Clientes API
│       ├── client.ts       # Axios instance con interceptors
│       ├── auth.ts         # Endpoints de auth
│       └── serviceOrders.ts # Endpoints de ordenes
├── pages/                   # Paginas/Vistas
│   ├── Login.tsx
│   └── Dashboard.tsx
├── hooks/                   # Custom React hooks
├── types/                   # TypeScript types
│   └── index.ts            # Tipos base
├── utils/                   # Utilidades
├── App.tsx                  # Router principal
├── main.tsx                 # Entry point
└── index.css               # Tailwind imports
```

## Comandos

```bash
# Instalar dependencias
npm install

# Desarrollo
npm run dev

# Build produccion
npm run build

# Preview build
npm run preview

# Lint
npm run lint
```

## Variables de Entorno

Crear archivo `.env.local`:

```env
VITE_API_URL=http://localhost:3041/api/v1
```

## Modulos por Implementar

### MMD-001: Fundamentos (Sprint 1-2)
- [ ] Configuracion de taller (wizard)
- [ ] Gestion de roles
- [ ] Catalogo de servicios
- [ ] Gestion de bahias

### MMD-002: Ordenes de Servicio (Sprint 2-5)
- [ ] Lista de ordenes con filtros
- [ ] Detalle de orden
- [ ] Crear orden (wizard 4 pasos)
- [ ] Tablero Kanban
- [ ] Registro de trabajos

### MMD-003: Diagnosticos (Sprint 2-4)
- [ ] Lista de diagnosticos
- [ ] Scanner OBD (DTC codes)
- [ ] Pruebas de banco
- [ ] Galeria de fotos

### MMD-004: Inventario (Sprint 4-6)
- [ ] Catalogo de refacciones
- [ ] Kardex de movimientos
- [ ] Alertas de stock
- [ ] Recepcion de mercancia

### MMD-005: Vehiculos (Sprint 4-6)
- [ ] Lista de vehiculos
- [ ] Ficha tecnica
- [ ] Especificaciones de motor
- [ ] Historial de servicios

### MMD-006: Cotizaciones (Sprint 6)
- [ ] Lista de cotizaciones
- [ ] Crear cotizacion
- [ ] Generar PDF
- [ ] Envio por email/WhatsApp

## Convenciones

### Nombres de Archivos
- Componentes: `PascalCase.tsx`
- Hooks: `useCamelCase.ts`
- Stores: `camelCaseStore.ts`
- Types: `camelCase.types.ts`
- Services: `camelCase.ts`

### Estructura de Feature
```
features/{feature}/
├── components/     # Componentes UI
├── hooks/          # Custom hooks
├── types/          # TypeScript types
└── index.ts        # Exports publicos
```

## Dependencias del Backend

Este frontend requiere el backend de mecanicas-diesel corriendo en el puerto 3041.

```bash
# Desde la raiz del proyecto
cd ../backend
npm run dev
```

---

*ERP Mecanicas Diesel - Sistema NEXUS*
*Creado: 2025-12-08*
