# Glosario

Definición de todos los términos clave del sistema. Usar consistentemente en documentación, código y comunicación.

---

## Términos del sistema

### CD-System
El nombre del framework/codebase base. Es el código compartido por todos los proyectos. Incluye el núcleo, todos los demos disponibles y todos los módulos disponibles.

### BewPro
La plataforma comercial que permite vender productos basados en CD-System a escala. Incluye venta directa (self-service) y venta a través de revendedores.

### Compañía Digital
El primer revendedor y caso de referencia. Opera como servicio con acompañamiento al cliente. Vende productos basados en CD-System bajo su propia marca.

---

## Términos de arquitectura

### Núcleo (CD-Base)
La capa 1 del sistema. Framework Laravel con layout maestro, servicios, helpers, middleware, configuración y panel de administración. Es lo que existe independientemente de qué demo o módulos se usen. Compartido por todos los proyectos.

### Demo (Template Visual)
La capa 2. Un template visual completo que define la identidad estética de un tipo de negocio. Incluye 5 componentes: header, footer, page-headers dinámicos, CSS (demo + skin), y vistas base (welcome, about, contact). Cada proyecto usa un solo demo.

### Módulo
La capa 3. Una unidad funcional independiente que se activa o desactiva por proyecto. Tiene modelos, controladores, vistas (frontend y admin), rutas y seeders propios. Ejemplos: blog, menu, services, gallery, faqs.

### Proyecto
Una instancia concreta para un cliente específico. Tiene su propia base de datos, datos de marca, contenido y configuración. Ejemplo: "Muma" es un proyecto que usa el producto Restaurant.

### Producto
Un paquete predefinido que combina un demo con módulos preactivados, listo para vender a un tipo de negocio. Ejemplo: "Producto Restaurant" = demo-restaurant + blog + menu + faqs.

---

## Términos del demo

### Header
Componente visual del demo que renderiza la barra de navegación superior. Incluye logo, menú dinámico (según módulos activos), CTAs y opcionalmente redes sociales. Ubicación: `layout/front/headers/demo-{nombre}.blade.php`.

### Footer
Componente visual del demo que renderiza el pie de página. Incluye contacto, links de navegación (según módulos activos), copyright. Ubicación: `layout/front/footers/demo-{nombre}.blade.php`.

### Page-Header (dinámico)
Marco visual que aparece en la parte superior de cada página de módulo (blog, services, gallery, etc.) con título, subtítulo y breadcrumb. Su estilo varía según el demo activo. Es el mecanismo que permite que un módulo se integre visualmente a cualquier demo. Implementado en `dynamic-header.blade.php` dentro de cada módulo.

### Skin
Archivo CSS que define los colores de un demo (`skin-{nombre}.css`). Aporta variables de color y estilos cromáticos que el demo CSS utiliza.

### Demo CSS
Archivo CSS que define la estructura visual del demo (`demos/demo-{nombre}.css`). Usa scoping bajo `html.demo-{nombre}` para aislamiento. Se carga después de custom.css para que prevalezca.

### Vistas base
Las páginas Welcome (home), About y Contact que vienen con cada demo, con diseño y estilo propios de ese demo. Ubicación: `modules/cd-base/frontend/demos/demo-{nombre}/`.

### Proyecto de referencia
Un proyecto real que valida que un demo (y su producto asociado) funciona correctamente. Ejemplo: Muma es el proyecto de referencia para demo-restaurant.

---

## Términos de configuración

### Provision (provisión)
El proceso de crear y configurar un proyecto nuevo completo. Puede ser manual (editar JSONs + ejecutar seeders) o automatizado (`bewpro:provision`).

### Provision template
Archivo JSON preconfigurado con toda la información necesaria para provisionar un proyecto de un producto específico. El revendedor/usuario solo completa los datos del cliente. Ubicación: `database/seeders/project-data/provision-template-{producto}.json`.

### Seeder
Clase Laravel que lee datos de un archivo JSON y los carga en la base de datos. Cada tipo de dato tiene su seeder: `CdSystemSeeder`, `SiteDataSeeder`, `AssetsSeeder`, `AnalyticsSeeder`, y seeders por módulo.

### Project_Seeder
El seeder maestro que ejecuta todos los demás seeders en el orden correcto. Es lo que corre `php artisan migrate:fresh --seed`.

### SiteConfigService
Servicio core que gestiona la configuración del proyecto desde la DB con caché de 24 horas. Los valores de DB tienen prioridad sobre los de `config/site.php`.

### Settings (tabla)
Tabla de la base de datos donde se almacena toda la configuración específica del proyecto (identidad, contacto, redes, SEO, analytics, etc.) como pares clave-valor.

---

## Términos de negocio

### Revendedor
Entidad que vende productos BewPro a sus propios clientes, brindando acompañamiento y servicio. Compañía Digital es el primer revendedor y caso de referencia.

### Cliente final
El usuario que contrata un producto (ya sea directamente en BewPro o a través de un revendedor) y lo usa para su negocio.

### Módulo incluido
Módulo que viene activado por defecto en un producto. Está dentro del precio base.

### Módulo adicional (opcional)
Módulo que se puede activar sobre un producto existente con un costo extra. Permite upselling sin modificar el producto base.

### Brand Assets
Archivos de identidad visual del cliente: logos, favicons, imágenes OG/Twitter. Se colocan en `public/cd-project/assets/` y se suben a Cloudinary mediante `AssetsSeeder`.

---

## Términos técnicos

### Multi-tenant
Arquitectura donde un solo codebase sirve a múltiples clientes (tenants). En CD-System, cada tenant es un proyecto con su propia base de datos.

### Scoping CSS
Técnica de aislar estilos CSS usando selectores específicos (`html.demo-{nombre}`) para que los estilos de un demo no afecten a otros.

### Middleware `module.enabled`
Middleware de Laravel que protege las rutas de un módulo. Si el módulo no está activo para el proyecto actual, las rutas devuelven 404.

### Cloudinary
Servicio externo de CDN para imágenes. Los assets del proyecto se suben a Cloudinary y se sirven desde URLs seguras (`secure_url`).
