# Checklist: Core Production-Ready

> Ultima actualizacion: 2026-03-29

Un core preset debe cumplir **8 criterios** para considerarse habilitado para venta y provisionado automatico.

---

## Los 8 criterios

### 1. Core JSON valido

**Archivo:** `database/seeders/products/core/{slug}.json`

Campos requeridos:
```json
{
  "demo": "demo-{name}",
  "modules": ["services", "faqs", ...],
  "modules_navigation": {
    "services": { "header": true, "footer": true },
    "faqs": { "header": false, "footer": true }
  },
  "skin": "auto",
  "fonts": {
    "primary": "Lexend",
    "secondary": "Lexend",
    "tertiary": "Open Sans"
  },
  "schema_type": "Organization",
  "header": {
    "cta_button": {
      "active": true,
      "title": "Contact",
      "url": "/contact",
      "target": "_self",
      "style": "primary"
    }
  }
}
```

**Verificacion:** JSON parsea sin error, demo existe, modules son slugs validos.

---

### 2. Demo completa (3 archivos blade + 1 CSS)

| Archivo | Ruta |
|---------|------|
| Header | `resources/views/layout/front/headers/demo-{name}.blade.php` |
| Footer | `resources/views/layout/front/footers/demo-{name}.blade.php` |
| Page header | `resources/views/layout/front/partials/page-header-{name}.blade.php` |
| CSS | `public/template/css/demos/demo-{name}.css` |

---

### 3. Vistas cd-base del demo (3 archivos)

**Ruta:** `resources/views/modules/cd-base/frontend/demos/demo-{name}/`

| Archivo | Pagina |
|---------|--------|
| welcome.blade.php | Homepage |
| about.blade.php | Nosotros |
| contact.blade.php | Contacto |

---

### 4. Dynamic headers de modulos

Cada modulo activo del core debe tener su demo registrado en el `dynamic-header.blade.php` del modulo.

**Ruta:** `resources/views/modules/{modulo}/frontend/partials/dynamic-header.blade.php`

El blade debe incluir un `@if($activeDemo === 'demo-{name}')` para el demo del core.

---

### 5. Seeds de contenido (minimo 2 de 3)

**Ruta:** `database/seeders/products/core/seeds/`

| Archivo | Prioridad | Contenido esperado |
|---------|-----------|-------------------|
| `faqs-{core}.json` | ALTA | 5-10 FAQs en 2-3 categorias, relevantes a la industria |
| `services-{core}.json` | ALTA | 4-6 servicios con titulo, descripcion, icono |
| `blog-{core}.json` | MEDIA | 2-3 articulos placeholder con categoria |

**Criterio minimo:** Al menos `faqs` + `services` (o el modulo principal del core si no tiene services).

---

### 6. Catalog mapping

Cada shop product que apunta a este core debe existir en `catalog.json`:

```json
{
  "yoga-instructor": { "core": "nutritionist", "name": "Yoga Instructor" }
}
```

**Verificacion:** Todos los shop products del core resuelven correctamente.

---

### 7. Provision test (dry-run OK)

```bash
php artisan bewpro:new test@test.com "Test" {core-slug} --dry-run
```

Debe completar sin errores y mostrar plan coherente.

---

### 8. Provision test (real, en DB temporal)

```bash
php artisan bewpro:new test@test.com "Test" {core-slug} --db=bp-test-{core} --no-email --skip-assets
```

Resultado esperado:
- DB creada con 62+ tablas
- Settings con demo correcto
- Modulos activos coinciden con core JSON
- User admin creado
- Contenido seed presente en tablas de modulos
- Frontend renderiza sin errores 500

---

## Resumen visual

```
Criterio                       Automatizable?   Bloqueante?
─────────────────────────────  ──────────────   ──────────
1. Core JSON valido            SI               SI
2. Demo completa               SI               SI
3. Vistas cd-base              SI               SI
4. Dynamic headers             SI               NO (warning)
5. Seeds de contenido          NO (manual)      SI (*)
6. Catalog mapping             SI               NO
7. Dry-run OK                  SI               SI
8. Provision test real         SI               SI

(*) Sin seeds el sitio funciona pero llega vacio = mala experiencia.
```
