# Módulos integrados — Supplements Shop

Detalla cómo cada **módulo BewPro** se ensambla con el demo `demo-supplements-shop` en este producto.

## Módulos activos (5)

### 🛍️ `products` — primary

| Aspecto | Detalle |
|---|---|
| Header nav | ✅ Visible — "Productos" |
| Footer nav | ✅ Visible |
| Vistas custom | `resources/views/modules/products/frontend/demos/demo-supplements-shop/` |
| Archivos | `catalogue.blade.php`, `show.blade.php`, `cart.blade.php`, `checkout.blade.php`, `confirmation.blade.php` |
| Controller branch | `ProductController::index()` y `show()` detectan `demo === 'demo-supplements-shop'` |
| Page header | `@include('modules.products.frontend.partials.dynamic-header')` con branch supplements-shop → `page-header-supplements-shop` |

**Catálogo (`/products-catalogue`)**:
- Layout 3-cols: sidebar izq (search + categorías + tags + top productos) + grid 3-cols
- Cards `.catalog-product-card` cuadradas (aspect 1/1) con hover translateY + shadow
- Badges: NUEVO (30 días), DIGITAL, AGOTADO
- Add to cart inline en card footer (POST `/shop/cart/add/{id}`)

**Detalle (`/products-catalogue/{slug}`)**:
- Thumb gallery Porto (main 800×800 + thumbs 200×200)
- Add to cart con cantidad + WhatsApp consulta directa
- Share buttons (WhatsApp, FB, X, Email, copy link)
- Tabs Descripción + Info adicional
- Productos relacionados (4 cards)
- JSON-LD Product + BreadcrumbList (SEO)

**Cart + Checkout (`/shop/cart`, `/shop/checkout`)**:
- Sesión-based (no requiere auth)
- Checkout WhatsApp (`CheckoutController::buildWhatsAppMessage()`)
- Order persistido en BD con `reference_code` ORD-YYYYMMDD-XXXX
- Confirmación con CTA WhatsApp + mensaje copiable fallback

### 📝 `blog` — Novedades

| Aspecto | Detalle |
|---|---|
| Header nav | ✅ Visible — "Novedades" (label custom, no "Blog") |
| Footer nav | ✅ Visible |
| Vistas | Heredan del fallback genérico — el demo-supplements-shop no clona vistas blog |
| Page header | Dynamic-header con branch supplements-shop |

**Seed default** (`blog-supplements-shop.json`): 3 posts demo del rubro:
1. "Cómo elegir tu primera proteína" (guías-de-uso)
2. "Creatina monohidratada: el suplemento más estudiado" (nutrición-deportiva)
3. "Suplementación para hipertrofia" (nutrición-deportiva)

Copy escrito con criterio educativo (no sensacionalista) — alineado a tono Optimum Nutrition.

### 🖼️ `gallery` — Marcas

| Aspecto | Detalle |
|---|---|
| Header nav | ✅ Visible — "Marcas" (label custom) |
| Footer nav | ✅ Visible |
| Uso del módulo | Re-propósito: en lugar de fotos lifestyle, gallery muestra **logos de marcas** del rubro |

**Brand Gallery del welcome** (sección dedicada en `welcome.blade.php`):
- Grid 6 cards aspect 3/2 con logos en grayscale + hover color
- Configurable vía `site.welcome.brands_list` (array de `{name, logo}`)
- Default: Star Nutrition / ENA Sport / Gentech / Universal / BSc / Pure Nutrition
- Si no hay logo, fallback texto del nombre uppercase con letterspacing

### ❓ `faqs` — Preguntas frecuentes

| Aspecto | Detalle |
|---|---|
| Header nav | ❌ Solo footer |
| Footer nav | ✅ |
| Vistas | Fallback genérico |

**Seed default** (`faqs-supplements-shop.json`): 11 FAQs en 3 categorías:
- **Pedidos y envíos** (4): cómo pedir, envíos, costos, devoluciones
- **Productos y asesoramiento** (4): cómo elegir, ANMAT, combinar suplementos, vegan
- **Pagos y cuotas** (3): métodos pago, descuentos, mayoristas

### 💬 `testimonials` — Social proof

| Aspecto | Detalle |
|---|---|
| Header nav | ❌ |
| Footer nav | ❌ |
| Renderiza en | Welcome (homepage) y bloque "Athlete Spotlight" |
| Seed | Reutiliza defaults del medical — recomendable customizar al rubro |

## Módulos opcionales (upsell)

### `services` (inactivo por default)
Activar si el shop ofrece servicios complementarios pagos (asesoramiento nutricional, planes de suplementación personalizados). Configurar via `cd-system.modules.services.active = 1`.

### `team` (inactivo)
Activar si quieren mostrar el equipo de nutricionistas/asesores. Útil para construir autoridad.

### `newsletter` (inactivo)
La sección Newsletter del welcome usa endpoint `/newsletter-subscribe` del módulo cd-base — no requiere activar el módulo `newsletter` legacy.

## Módulos NO recomendados

- ❌ `menu` — restaurante, no aplica
- ❌ `tokko` — real estate
- ❌ `translations` — multi-idioma, scope mayor (puede activarse si el shop exporta)
- ❌ `references` — más para servicios corporativos

## Páginas auxiliares (cd-base)

| Página | URL | Demo-supplements-shop |
|---|---|---|
| `/` | Welcome | ✅ Custom (8 secciones) |
| `/about` | About | ✅ Custom (heredado del medical, ajustes shop) |
| `/contact` | Contact | ✅ Custom (heredado, WhatsApp prominente) |

## Integración con el demo

El demo-supplements-shop **respeta** la arquitectura de capas BewPro:

```
Demo (template visual)              ← demo-supplements-shop
  ├── headers/footers
  ├── welcome/about/contact (cd-base)
  └── product views (cuando aplique)

Módulos (funcionalidad)             ← products, blog, gallery, faqs, testimonials
  ├── Vistas FALLBACK genéricas     ← se usan si el demo no tiene custom
  └── Vistas DEMO-SPECIFIC          ← override por demo

Core preset (configuración)          ← supplements-shop.json
  ├── modules activos
  ├── navegación
  ├── branding defaults
  └── schema_type

Datos del proyecto (DB tenant)       ← bp-{tenant}
  ├── products, posts, faqs reales
  └── settings.theme.colors override
```

Esto significa que cualquier futuro tenant del rubro shop puede:
1. Provisionar con `bewpro:new {email} {nombre} supplements-shop`
2. Heredar TODOS los defaults (paleta, modules, navegación, schema, copy)
3. Override vía admin sin tocar código del demo
4. Iterar diseño del demo sin afectar tenants existentes (cambios en `demo-supplements-shop/*` aplican a TODOS los que tengan ese demo)
