# Guía: Crear un nuevo producto

Un **producto** es un paquete predefinido que combina un demo con módulos preactivados, listo para vender a un tipo de negocio específico.

Para contexto conceptual, ver [fundamentos/03-concepto-producto.md](../fundamentos/03-concepto-producto.md).

## Prerrequisitos

- El demo que usará el producto ya debe existir en el sistema (ver [crear-demo.md](crear-demo.md))
- Los módulos que incluirá el producto ya deben existir (ver [GUIA-COMPLETA-MODULOS.md](GUIA-COMPLETA-MODULOS.md))

## Proceso paso a paso

### 1. Definir la composición del producto

| Decisión | Qué definir |
|----------|-------------|
| Demo | Qué demo usará este producto (ej: demo-restaurant) |
| Módulos incluidos | Lo esencial para el rubro (ej: blog, menu, faqs) |
| Módulos opcionales | Upselling: qué módulos tiene sentido ofrecer como extra |
| Navegación default | Qué módulos aparecen en header y cuáles solo en footer |

### 2. Verificar integración demo ↔ módulos

Para cada módulo incluido, verificar que:

- [ ] El módulo tiene un `dynamic-header.blade.php` con variante para el demo elegido
- [ ] El page-header del módulo se ve coherente con el demo (tipo classic o modern)
- [ ] La navegación del header y footer incluye correctamente al módulo
- [ ] Las vistas del módulo (index, show) renderizan correctamente con el CSS del demo

Si alguna integración falta, crearla antes de continuar.

### 3. Crear el provision template

Copiar `database/seeders/project-data/provision-template.json` y preconfigurar:

```json
{
  "project": {
    "name": "[COMPLETAR]",
    "db_name": "[COMPLETAR]"
  },
  "theme": {
    "demo": "demo-{nombre-demo}",
    "skin": "auto",
    "fonts": {
      "primary": "{fuente-del-demo}",
      "secondary": "{fuente-del-demo}",
      "tertiary": "Open Sans"
    }
  },
  "modules": {
    "blog": { "active": true, "navigation": { "header": true, "footer": true } },
    "menu": { "active": true, "navigation": { "header": true, "footer": true } },
    "faqs": { "active": true, "navigation": { "header": false, "footer": true } },
    "about": { "active": true, "navigation": { "header": false, "footer": true } },
    "contact": { "active": true, "navigation": { "header": true, "footer": true } }
  },
  "site_data": {
    "name": "[COMPLETAR]",
    "tagline": "[COMPLETAR]",
    "contact": { "phone": "[COMPLETAR]", "email": "[COMPLETAR]" }
  }
}
```

Los campos marcados `[COMPLETAR]` son los que el revendedor/cliente completa al crear un proyecto de este producto.

Guardar como: `database/seeders/project-data/provision-template-{producto}.json`

### 4. Crear proyecto de referencia

Crear un proyecto real o con datos realistas que valide el producto:

1. Copiar el provision template y completar con datos de referencia
2. Ejecutar `php artisan bewpro:provision provision-{referencia}.json`
3. Verificar que todo funciona: home, módulos, navegación, assets

Este proyecto será la **referencia** contra la cual se validen todos los proyectos futuros de este producto.

### 5. Documentar el producto

Crear la carpeta `docs/productos/{nombre-producto}/` con:

- `README.md` -- Descripción, demo, módulos, referencia (seguir [plantilla](../productos/_plantilla-producto.md))
- `identidad.md` -- Tipografía, colores, skin
- `modulos-integrados.md` -- Detalle de integración de cada módulo
- `checklist.md` -- Validación completa

### 6. Actualizar el catálogo

Agregar el producto a `docs/productos/README.md` en la tabla de productos validados.

## Checklist de completitud

### Demo
- [ ] El demo existe con sus 5 componentes (header, footer, vistas base, CSS, skin)
- [ ] El demo está registrado en helpers y page-headers

### Módulos
- [ ] Cada módulo incluido tiene dynamic-header para el demo
- [ ] La navegación (header/footer) está definida correctamente
- [ ] Los seeders de cada módulo generan contenido válido

### Provisión
- [ ] Provision template creado: `provision-template-{producto}.json`
- [ ] Provisión probada con datos de referencia
- [ ] Proyecto de referencia activo y verificado

### Documentación
- [ ] Carpeta `docs/productos/{producto}/` creada
- [ ] README.md con descripción, módulos, referencia
- [ ] Catálogo actualizado en `docs/productos/README.md`

### Validación final
- [ ] Home renderiza correctamente con el demo
- [ ] Cada módulo incluido es accesible y se ve coherente
- [ ] Page-headers dinámicos funcionan en todos los módulos
- [ ] La provisión de un proyecto nuevo funciona de extremo a extremo
