# doli-front

SPA (Single Page Application) para la gestión empresarial integrada con Dolibarr.  
Desarrollada en Vanilla JS con Vite 7, sin frameworks frontend.

## Tecnologías

- **Vanilla JS** con ES Modules
- **Vite 7** — bundler y servidor de desarrollo
- **Chart.js** — gráficas del dashboard
- **@huggingface/transformers** — asistente de voz (Whisper, ejecución local en el navegador)

## Requisitos

- Node.js 18+
- pnpm

## Instalación y desarrollo

```bash
pnpm install
pnpm dev        # http://localhost:5173
```

## Build de producción

```bash
pnpm build      # genera la carpeta dist/
pnpm preview    # previsualización del build
```

## Configuración

Crea un archivo `.env` en la raíz del proyecto:

```env
VITE_API_BASE_URL=http://localhost:5001
```

Por defecto apunta al BFF en `localhost:5001`.

## Páginas disponibles

| Ruta hash | Página | Descripción |
|-----------|--------|-------------|
| `#/` | Dashboard | Métricas generales y gráficas |
| `#/facturas` | Facturas | Facturas de clientes: crear, editar, anular |
| `#/facturas-proveedores` | Facturas proveedores | CRUD completo, líneas, pagos y cambio de estado |
| `#/clientes` | Clientes | Listado y gestión de clientes |
| `#/contacts` | Contactos | Listado y gestión de contactos |
| `#/banco` | Banco | Movimientos bancarios |
| `#/settings` | Configuración | Tema, sesión JWT, webhook y registro VeriFactu |

## Estructura del proyecto

```
doli-front/
├── src/
│   ├── main.js              # punto de entrada
│   ├── router.js            # router hash-based
│   ├── pages/               # una página por módulo de negocio
│   │   ├── pagesRegistry.js # registro central de rutas
│   │   ├── DashboardPage.js
│   │   ├── Facturas.js
│   │   ├── FacturasProveedores.js
│   │   ├── ClientesPage.js
│   │   ├── ContactsPage.js
│   │   ├── BancoPage.js
│   │   └── SettingsPage.js
│   ├── services/            # clientes HTTP por entidad
│   │   ├── apiClient.js     # fetch base con JWT automático
│   │   ├── auth.js
│   │   ├── invoices.js
│   │   ├── supplierInvoices.js
│   │   ├── clients.js
│   │   ├── contacts.js
│   │   ├── verifactu.js
│   │   └── ...
│   ├── components/          # componentes reutilizables
│   │   ├── Sidebar.js
│   │   ├── InvoiceModal.js
│   │   ├── VoiceAssistant.js
│   │   └── ...
│   └── styles/              # CSS modular
├── index.html
└── vite.config.js
```

## Arquitectura

La aplicación sigue un patrón de **SPA con router hash** sin dependencias de framework:

1. `main.js` inicializa el router y monta el layout principal (sidebar + área de contenido).
2. `router.js` escucha cambios en `window.location.hash` y renderiza la página correspondiente.
3. Cada página es una función que devuelve un `HTMLElement` con toda su lógica encapsulada.
4. `services/apiClient.js` centraliza todas las llamadas HTTP, adjunta el token JWT y gestiona errores 401.

## Credenciales de acceso (desarrollo)

- **Usuario:** `admin`
- **Contraseña:** `12345678`

> Estas son las credenciales del BFF/Dolibarr por defecto.
