# Guía Completa: Configuración de Nuevo Proyecto Incoming

## 📋 Cómo Usar Este Documento

Este documento es una **plantilla reutilizable** para configurar cualquier nuevo proyecto en CD-System. 

### Para usar este documento:

1. **Lee la sección "🎯 Plantilla de Datos del Proyecto"** y completa los valores específicos del proyecto incoming
2. **Sigue las secciones numeradas** para configurar cada aspecto del sistema
3. **Usa los ejemplos** como referencia, reemplazando los valores de ejemplo con los del proyecto real
4. **Revisa el checklist** al final para asegurar que todo está configurado

### Estructura del Documento

- **Secciones 1-9**: Configuración técnica detallada (genérica, aplica a todos los proyectos)
- **Sección 10**: Checklist completo de configuración
- **Sección 11**: Comandos útiles
- **Sección 12**: Troubleshooting

---

## 🎯 Plantilla de Datos del Proyecto

**COMPLETAR ESTA SECCIÓN CON LOS DATOS DEL PROYECTO INCOMING:**

```
┌─────────────────────────────────────────────────────────────┐
│                  DATOS DEL PROYECTO INCOMING                │
├─────────────────────────────────────────────────────────────┤
│ Proyecto: [NOMBRE_DEL_PROYECTO]                            │
│ Demo: [demo-restaurant | demo-insurance | demo-law-firm-2]  │
│                                                              │
│ Módulos activos:                                            │
│   - [services | blog ]      │
│   - [faqs ]                       │
│   - Siempre activos: welcome, about, contact                │
│                                                              │
│ Datos de contacto:                                          │
│   - Teléfono: [5493814069205]                            │
│   - WhatsApp: [5493814069205]                            │
│   - Email: [info@pevero-salud.com]                                 │
│   - Dirección: [Laprida 291, Tucuman - Argentina]                           │
│   - Horarios: [Lun a Sab: 10 a.m.–1:30 p.m., 5–9 p.m.]                          │
│                                                              │
│ Redes sociales:                                             │
│   - Instagram: [URL_INSTAGRAM]                              │
│   - Facebook: [URL_FACEBOOK]                               │
│   - LinkedIn: [URL_LINKEDIN]                                │
│   - YouTube: [URL_YOUTUBE]                                  │
│   - WhatsApp: [URL_WHATSAPP]                                │
│                                                              │
│ Base de datos:                                              │
│   - Nombre BD: [bp-peverosalud]                         │
│   - Usuario BD: [USUARIO_BD]                               │
│   - Contraseña BD: [PASSWORD_BD]                           │
│                                                              │
│ Google Analytics:                                           │
│   - Tracking ID: [G-WW38Z1RCSP]                             │
│                                                              │
│ SEO:                                                        │
│   - Keywords: [PALABRAS_CLAVE_SEO]                         │
│   - Description: [DESCRIPCION_SEO]                         │
│   - Title: [TITULO_SEO]                                     │
└─────────────────────────────────────────────────────────────┘
```

### Ejemplo Completo (Pevero Salud):

```
Proyecto: Pevero Salud
Demo: demo-insurance
Módulos activos: services, faqs (además de welcome, about, contact)

Datos de contacto:
  - Teléfono: +5493814069205
  - WhatsApp: +5493814069205
  - Email: info@pevero-salud.com
  - Dirección: [Dirección física]
  - Horarios: Lun - Vie 9:00am - 6:00pm

Redes sociales:
  - Instagram: https://www.instagram.com/pevero_salud/
  - WhatsApp: https://wa.me/5493814069205
  - Facebook: [no aplica]
  - LinkedIn: [no aplica]

Base de datos:
  - Nombre BD: pevero_salud
  - Usuario BD: root
  - Contraseña BD: [vacío para local]

Google Analytics:
  - Tracking ID: G-XXXXXXXXXX

SEO:
  - Keywords: seguros, salud, medicina, seguros médicos
  - Description: Pevero Salud - Seguros médicos y servicios de salud
  - Title: Pevero Salud - Seguros Médicos
```

---

## 📁 Estructura de Archivos de Configuración

Los archivos de configuración del proyecto se encuentran en:
```
database/seeders/project-data/
├── cd-system.json          # Demo activo y módulos ⭐
├── site-data.json          # Datos del proyecto (contacto, SEO, redes sociales) ⭐
├── assets.json             # Referencias a assets (logos, favicons)
├── analytics.json          # Google Analytics
├── services.json           # Servicios y categorías (si módulo activo)
├── faqs.json               # FAQs y categorías (si módulo activo)
├── blog.json               # Posts del blog (si módulo activo)
├── products.json           # Productos (si módulo activo)
├── projects.json           # Proyectos/Portfolio (si módulo activo)
├── gallery.json            # Galería de imágenes (si módulo activo)
├── news.json               # Noticias (si módulo activo)
├── team.json               # Equipo (si módulo activo)
├── references.json         # Referencias/Clientes (si módulo activo)
└── users.json              # Usuarios del proyecto
```

**⭐ = Archivos críticos que SIEMPRE deben configurarse**

---

## 🔧 1. Configuración del Archivo .env

### Ubicación
```
.env
```

### Variables a Configurar

#### Información Básica del Proyecto
```env
APP_NAME="[NOMBRE_DEL_PROYECTO]"
APP_ENV=local                    # o "production" para producción
APP_DEBUG=true                   # false en producción
```

#### Base de Datos
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1                # o IP del servidor
DB_PORT=3306
DB_DATABASE=[NOMBRE_BASE_DATOS]  # Nombre de la BD del proyecto
DB_USERNAME=[USUARIO_BD]         # Usuario de BD
DB_PASSWORD=[PASSWORD_BD]         # Contraseña de BD
```

#### Google Analytics (si aplica)
```env
GOOGLE_ANALYTICS_ID=[G-XXXXXXXXXX]
```

#### Flag de Seeders del Proyecto
```env
RUN_PROJECT_SEEDER=true         # CRÍTICO: Debe estar en true para ejecutar seeders del proyecto
```

### Notas Importantes
- El archivo `.env` se crea desde `.env.example` durante el setup
- En **cPanel**, las credenciales de BD suelen ser diferentes (usuario con prefijo)
- El script `setup_cd_project.sh` configura automáticamente estas variables

---

## 🎨 2. Configuración del Demo

### Archivo: `database/seeders/project-data/cd-system.json`

### Estructura Base
```json
{
  "theme": {
    "demo": "[NOMBRE_DEL_DEMO]",
    "skin": "[NOMBRE_DEL_SKIN]"
  },
  "modules": {
    // Ver sección de módulos
  }
}
```

### Demos Disponibles
- `demo-restaurant` → Skin: `skin-restaurant`
- `demo-law-firm-2` → Skin: `skin-law-firm-2`
- `demo-construction` → Skin: `skin-construction`
- `demo-insurance` → Skin: `skin-insurance`
- `demo-corporate` → Skin: `skin-corporate`
- Y otros según el sistema

### Ejemplo para Pevero Salud
```json
{
  "theme": {
    "demo": "demo-insurance",
    "skin": "skin-insurance"
  }
}
```

### Configuración en el Sistema
El demo se configura en:
1. **JSON**: `database/seeders/project-data/cd-system.json`
2. **Seeder**: `CdSystemSeeder.php` carga este JSON y lo guarda en la tabla `settings`
3. **Config**: `config/cd-system.php` contiene la estructura base (valores por defecto)

### Verificación
- El demo se carga automáticamente desde la DB mediante `CdSystemConfigService`
- Los headers y footers específicos del demo se encuentran en:
  - `resources/views/layout/front/headers/[demo-name].blade.php`
  - `resources/views/layout/front/footers/[demo-name].blade.php`

---

## 🔌 3. Configuración de Módulos

### Archivo: `database/seeders/project-data/cd-system.json`

### Módulos Disponibles

```json
{
  "modules": {
    "blog": { "active": false, "navigation": { "header": false, "footer": false } },
    "products": { "active": false, "navigation": { "header": false, "footer": false } },
    "services": { "active": false, "navigation": { "header": false, "footer": false } },
    "projects": { "active": false, "navigation": { "header": false, "footer": false } },
    "gallery": { "active": false, "navigation": { "header": false, "footer": false } },
    "newsletter": { "active": false },
    "faqs": { "active": false, "navigation": { "header": false, "footer": false } },
    "team": { "active": false },
    "about": { "active": true, "navigation": { "header": false, "footer": false } },
    "contact": { "active": true, "navigation": { "header": true, "footer": true } },
    "news": { "active": false, "navigation": { "header": false, "footer": false } },
    "references": { "active": false },
    "project-setup": { "active": true },
    "translations": { "active": false }
  }
}
```

### Plantilla de Configuración

**Para cada módulo que quieras activar:**

```json
"[NOMBRE_MODULO]": {
  "active": true,
  "navigation": {
    "header": true,    // Mostrar en menú del header
    "footer": true     // Mostrar en menú del footer
  }
}
```

**Para módulos que NO necesitas:**

```json
"[NOMBRE_MODULO]": {
  "active": false
}
```

### Ejemplo: Proyecto con Services y FAQs

```json
{
  "modules": {
    "services": {
      "active": true,
      "navigation": {
        "header": true,
        "footer": true
      }
    },
    "faqs": {
      "active": true,
      "navigation": {
        "header": false,
        "footer": true
      }
    },
    "about": {
      "active": true,
      "navigation": {
        "header": true,
        "footer": true
      }
    },
    "contact": {
      "active": true,
      "navigation": {
        "header": true,
        "footer": true
      }
    },
    "blog": { "active": false },
    "products": { "active": false },
    "projects": { "active": false },
    "gallery": { "active": false },
    "newsletter": { "active": false },
    "team": { "active": false },
    "news": { "active": false },
    "references": { "active": false }
  }
}
```

### Propiedades de Navegación
- `header`: Mostrar en el menú del header (true/false)
- `footer`: Mostrar en el menú del footer (true/false)
- Si no se especifica `navigation`, el comportamiento por defecto es:
  - Todos los módulos aparecen en header y footer
  - Excepto FAQs que solo aparecen en footer por defecto

### Módulos Base (Siempre Activos)
Estos módulos están siempre disponibles y no requieren activación:
- `welcome` (página de inicio)
- `about` (página sobre nosotros)
- `contact` (página de contacto)

### Seeders Relacionados
Cada módulo activo puede tener su propio seeder y JSON:
- `services` → `ServicesSeeder.php` + `services.json`
- `faqs` → `FaqsSeeder.php` + `faqs.json`
- `blog` → `BlogSeeder.php` + `blog.json`
- etc.

---

## 📝 4. Configuración de Datos del Proyecto

### Archivo: `database/seeders/project-data/site-data.json`

### Estructura Completa con Placeholders

#### Información Básica
```json
{
  "name": "[NOMBRE_DEL_PROYECTO]",
  "tagline": "[TAGLINE_O_ESLOGAN]",
  "url": "[URL_DEL_SITIO]",
  "author": "[AUTOR_O_NOMBRE_EMPRESA]",
  "description": "[DESCRIPCION_SEO_DEL_SITIO]"
}
```

#### Información de Contacto
```json
{
  "contact": {
    "phone": "[NUMERO_TELEFONO]",
    "email": "[EMAIL_CONTACTO]",
    "address": "[DIRECCION_FISICA]",
    "hours": "[HORARIOS_ATENCION]"
  }
}
```

#### Redes Sociales
```json
{
  "social_media": {
    "linkedin": {
      "url": "[URL_LINKEDIN]",
      "active": true/false
    },
    "instagram": {
      "url": "[URL_INSTAGRAM]",
      "active": true/false
    },
    "facebook": {
      "url": "[URL_FACEBOOK]",
      "active": true/false
    },
    "youtube": {
      "url": "[URL_YOUTUBE]",
      "active": true/false
    },
    "whatsapp": {
      "url": "[URL_WHATSAPP]",
      "active": true/false
    },
    "tripadvisor": {
      "url": "[URL_TRIPADVISOR]",
      "active": true/false
    }
  }
}
```

#### Configuración SEO
```json
{
  "seo": {
    "keywords": "[PALABRAS_CLAVE_SEO]",
    "description": "[DESCRIPCION_SEO]",
    "title": "[TITULO_SEO]",
    "schema": {
      "type": "[Organization | Restaurant | LocalBusiness | etc]",
      "name": "[NOMBRE_ORGANIZACION]",
      "url": "[URL_DEL_SITIO]",
      "logo": "cd-project/assets/logo.png",
      "description": "[DESCRIPCION_ORGANIZACION]"
    }
  }
}
```

#### Open Graph (Facebook, LinkedIn)
```json
{
  "og": {
    "title": "[TITULO_OG]",
    "description": "[DESCRIPCION_OG]",
    "url": "[URL_DEL_SITIO]",
    "site_name": "[NOMBRE_DEL_SITIO]",
    "image": "cd-project/assets/og-image.png",
    "image_alt": "[TEXTO_ALTERNATIVO_IMAGEN]"
  }
}
```

#### Twitter Cards
```json
{
  "twitter": {
    "title": "[TITULO_TWITTER]",
    "description": "[DESCRIPCION_TWITTER]",
    "image": "cd-project/assets/twitter-image.png",
    "image_alt": "[TEXTO_ALTERNATIVO_IMAGEN]"
  }
}
```

#### Assets (Rutas)
```json
{
  "assets": {
    "favicon": "cd-project/assets/favicon.ico",
    "apple_touch_icon": "cd-project/assets/apple-touch-icon.png",
    "loader_logo": "cd-project/assets/logo-2.png",
    "main_logo": "cd-project/assets/logo.png",
    "main_logo_sticky": "cd-project/assets/logo.png",
    "footer_logo": "cd-project/assets/logo.png",
    "main_logo_alt": "[TEXTO_ALTERNATIVO_LOGO]",
    "main_logo_height": 60,
    "hero_background": "cd-project/img/demos/[DEMO_NAME]/backgrounds/background-1.jpg",
    "section_background": "cd-project/img/demos/[DEMO_NAME]/backgrounds/background-2.jpg",
    "about_header_background": "cd-project/img/demos/[DEMO_NAME]/backgrounds/background-3.jpg",
    "contact_header_background": "cd-project/img/demos/[DEMO_NAME]/backgrounds/background-1.jpg"
  }
}
```

#### Footer
```json
{
  "footer": {
    "links": {
      "contact": {
        "label": "[ETIQUETA_CONTACTO]",
        "url": "/contact"
      },
      "[OTRO_LINK]": {
        "label": "[ETIQUETA]",
        "url": "[URL]"
      }
    },
    "navegacion_principal": {
      "[MODULO_1]": {
        "title": "[TITULO_MODULO]",
        "url": "/[ruta-modulo]",
        "active": true,
        "order": 1
      }
    }
  }
}
```

#### Modo Desarrollo (Coming Soon)
```json
{
  "development": {
    "enabled": false,
    "title": "[TITULO_COMING_SOON]",
    "subtitle": "[SUBTITULO_COMING_SOON]",
    "progress": {
      "conception": {
        "label": "[ETIQUETA]",
        "percentage": 100,
        "status": "[ESTADO]"
      },
      "design": {
        "label": "[ETIQUETA]",
        "percentage": 85,
        "status": "[ESTADO]"
      },
      "development": {
        "label": "[ETIQUETA]",
        "percentage": 75,
        "status": "[ESTADO]"
      }
    },
    "show_newsletter": true
  }
}
```

### Seeder Relacionado
- `SiteDataSeeder.php` carga este JSON y lo guarda en la tabla `settings` con prefijo `site.`

---

## 🖼️ 5. Configuración de Assets

### Archivos Físicos
Los assets deben estar físicamente en:
```
public/cd-project/assets/
├── logo.png
├── logo-2.png
├── favicon.ico
├── apple-touch-icon.png
├── og-image.png
└── twitter-image.png
```

### Archivo JSON: `database/seeders/project-data/assets.json`

```json
{
  "assets": [
    {
      "name": "logo.png",
      "path": "cd-project/assets/logo.png",
      "type": "image/png",
      "category": "logo"
    },
    {
      "name": "favicon.ico",
      "path": "cd-project/assets/favicon.ico",
      "type": "image/x-icon",
      "category": "favicon"
    }
  ]
}
```

### Seeder Relacionado
- `AssetsSeeder.php` carga este JSON y registra los assets en la tabla `assets`
- Si los assets están en Cloudinary, se resuelven automáticamente las URLs

### Comando para Actualizar Assets
```bash
php artisan project:update-assets public/cd-project/assets --backup --project="[NOMBRE_PROYECTO]"
```

---

## 📊 6. Configuración de Google Analytics

### Archivo: `database/seeders/project-data/analytics.json`

```json
{
  "google_analytics": {
    "enabled": true,
    "tracking_id": "[G-XXXXXXXXXX]",
    "tracking_id_dev": null,
    "track_in_local": false
  }
}
```

### Seeder Relacionado
- `AnalyticsSeeder.php` carga este JSON y lo guarda en la tabla `settings`

### Nota
También se puede configurar directamente en `.env`:
```env
GOOGLE_ANALYTICS_ID=[G-XXXXXXXXXX]
```

---

## 📦 7. Configuración de Contenido por Módulo

### 7.1. Servicios (Services) - Si está activo

#### Archivo: `database/seeders/project-data/services.json`

```json
{
  "service_categories": [
    {
      "name": "[NOMBRE_CATEGORIA]",
      "slug": "[slug-categoria]",
      "description": "[DESCRIPCION_CATEGORIA]",
      "icon": "fas fa-[icono]",
      "color": "#[COLOR_HEX]",
      "sort_order": 1,
      "is_active": true
    }
  ],
  "services": [
    {
      "title": "[TITULO_SERVICIO]",
      "slug": "[slug-servicio]",
      "description": "[DESCRIPCION_SERVICIO]",
      "category_slug": "[slug-categoria]",
      "content": "[CONTENIDO_COMPLETO]",
      "is_featured": true,
      "sort_order": 1
    }
  ]
}
```

#### Seeders Relacionados
- `ServiceCategoriesSeeder.php` - Carga las categorías
- `ProjectsServicesSeeder.php` - Carga los servicios

---

### 7.2. FAQs - Si está activo

#### Archivo: `database/seeders/project-data/faqs.json`

```json
{
  "faqs_categories": [
    {
      "name": "[NOMBRE_CATEGORIA]",
      "slug": "[slug-categoria]",
      "description": "[DESCRIPCION_CATEGORIA]"
    }
  ],
  "faqs": [
    {
      "question": "[PREGUNTA]",
      "answer": "[RESPUESTA]",
      "category_slug": "[slug-categoria]",
      "order": 1,
      "is_featured": true
    }
  ]
}
```

#### Seeder Relacionado
- `FaqsSeeder.php` carga este JSON

---

### 7.3. Blog - Si está activo

#### Archivo: `database/seeders/project-data/blog.json`

```json
{
  "categories": [
    {
      "name": "[NOMBRE_CATEGORIA]",
      "slug": "[slug-categoria]",
      "description": "[DESCRIPCION_CATEGORIA]"
    }
  ],
  "posts": [
    {
      "title": "[TITULO_POST]",
      "slug": "[slug-post]",
      "excerpt": "[RESUMEN_POST]",
      "content": "[CONTENIDO_COMPLETO]",
      "category_slug": "[slug-categoria]",
      "is_published": true,
      "published_at": "[YYYY-MM-DD]"
    }
  ]
}
```

#### Seeder Relacionado
- `BlogSeeder.php` carga este JSON

---

### 7.4. Otros Módulos

Cada módulo activo puede tener su propio JSON:
- `products.json` → `ProductsSeeder.php`
- `projects.json` → `ProjectsSeeder.php`
- `gallery.json` → `GallerySeeder.php`
- `news.json` → `NewsSeeder.php`
- `team.json` → `TeamSeeder.php`
- `references.json` → `ReferencesSeeder.php`

**Nota:** Solo configura los JSONs de los módulos que están activos.

---

## 👥 8. Configuración de Usuarios

### Archivo: `database/seeders/project-data/users.json`

```json
{
  "users": [
    {
      "name": "[NOMBRE_USUARIO]",
      "email": "[EMAIL_USUARIO]",
      "password": "[PASSWORD]",
      "role": "admin"
    }
  ]
}
```

### Seeder Relacionado
- `ProjectsUsersSeeder.php` carga este JSON
- Los usuarios se crean con roles y permisos asignados

### Nota
El usuario admin por defecto se crea con:
- Email: `admin@[nombre-proyecto].com`
- Password: `password`
- Se recomienda cambiar la contraseña después del setup

---

## 🔄 9. Flujo de Ejecución de Seeders

### Orden de Ejecución

1. **DatabaseSeeder.php** (seeders base):
   - `PermissionsSeeder`
   - `ProductPermissionsSeeder`
   - `RolesSeeder`
   - `AssignProductPermissionsSeeder`
   - `UsersSeeder`
   - `SettingsSeeder`
   - `Project_Seeder` ⬇️

2. **Project_Seeder.php** (seeders del proyecto):
   - `CdSystemSeeder` ⭐ (demo y módulos)
   - `SiteDataSeeder` ⭐ (datos del proyecto)
   - `AssetsSeeder` ⭐ (assets)
   - `AnalyticsSeeder` ⭐ (Google Analytics)
   - `ProjectsUsersSeeder` (usuarios del proyecto)
   - `ServiceCategoriesSeeder` + `ProjectsServicesSeeder` (servicios)
   - `BlogSeeder` (blog)
   - `GallerySeeder` (galería)
   - `CdBaseSeeder` (contenido base)
   - `ProjectsSeeder` (proyectos)
   - `TeamSeeder` (equipo)
   - `ProductsSeeder` (productos)
   - `ReferencesSeeder` (referencias)
   - `FaqsSeeder` (FAQs)

### Flag de Control
El flag `RUN_PROJECT_SEEDER=true` en `.env` controla si se ejecutan los seeders del proyecto.

---

## 📋 10. Checklist Completo de Configuración

### Pre-Setup
- [ ] Completar la sección "🎯 Plantilla de Datos del Proyecto" con los datos del proyecto incoming
- [ ] Crear base de datos: `[NOMBRE_BASE_DATOS]`
- [ ] Tener credenciales de acceso a la BD
- [ ] Tener assets del proyecto (logos, favicons, imágenes)

### Archivo .env
- [ ] Configurar `APP_NAME="[NOMBRE_PROYECTO]"`
- [ ] Configurar `DB_DATABASE=[NOMBRE_BASE_DATOS]`
- [ ] Configurar `DB_USERNAME=[USUARIO_BD]` y `DB_PASSWORD=[PASSWORD_BD]`
- [ ] Configurar `GOOGLE_ANALYTICS_ID=[G-XXXXXXXXXX]` (si aplica)
- [ ] Establecer `RUN_PROJECT_SEEDER=true`

### Configuración del Demo
- [ ] Editar `database/seeders/project-data/cd-system.json`
- [ ] Configurar `theme.demo` = `"[NOMBRE_DEL_DEMO]"`
- [ ] Configurar `theme.skin` = `"[NOMBRE_DEL_SKIN]"`

### Configuración de Módulos
- [ ] Editar `database/seeders/project-data/cd-system.json`
- [ ] Activar módulos necesarios según el proyecto
- [ ] Desactivar módulos no necesarios
- [ ] Configurar navegación (header/footer) para cada módulo activo

### Datos del Proyecto
- [ ] Editar `database/seeders/project-data/site-data.json`
- [ ] Configurar información básica (name, tagline, url, author)
- [ ] Configurar contacto (phone, email, address, hours)
- [ ] Configurar redes sociales (URLs y active)
- [ ] Configurar SEO (keywords, description, schema)
- [ ] Configurar Open Graph
- [ ] Configurar Twitter Cards
- [ ] Configurar rutas de assets
- [ ] Configurar footer según módulos activos

### Assets
- [ ] Copiar assets físicos a `public/cd-project/assets/`
- [ ] Editar `database/seeders/project-data/assets.json` (si es necesario)
- [ ] Ejecutar comando de actualización de assets

### Google Analytics
- [ ] Editar `database/seeders/project-data/analytics.json`
- [ ] Configurar `tracking_id`

### Contenido por Módulo
- [ ] **Services**: Editar `database/seeders/project-data/services.json` (si módulo activo)
- [ ] **FAQs**: Editar `database/seeders/project-data/faqs.json` (si módulo activo)
- [ ] **Blog**: Editar `database/seeders/project-data/blog.json` (si módulo activo)
- [ ] **Products**: Editar `database/seeders/project-data/products.json` (si módulo activo)
- [ ] **Projects**: Editar `database/seeders/project-data/projects.json` (si módulo activo)
- [ ] **Gallery**: Editar `database/seeders/project-data/gallery.json` (si módulo activo)
- [ ] **News**: Editar `database/seeders/project-data/news.json` (si módulo activo)
- [ ] **Team**: Editar `database/seeders/project-data/team.json` (si módulo activo)
- [ ] **References**: Editar `database/seeders/project-data/references.json` (si módulo activo)

### Usuarios
- [ ] Editar `database/seeders/project-data/users.json`
- [ ] Configurar usuarios del proyecto

### Ejecución
- [ ] Ejecutar `php artisan migrate:fresh --seed`
- [ ] Verificar que todos los seeders se ejecutaron correctamente
- [ ] Verificar que el demo se carga correctamente
- [ ] Verificar que los módulos activos funcionan
- [ ] Verificar que los datos del proyecto se muestran correctamente

---

## 🚀 11. Comandos Útiles

### Setup Inicial
```bash
# Ejecutar setup del proyecto
./scripts/setup_cd_project.sh

# O crear proyecto completo con JSON
./scripts/create-complete-project.sh config.json
```

### Migraciones y Seeders
```bash
# Ejecutar migraciones y seeders
php artisan migrate:fresh --seed

# Solo ejecutar seeders específicos
php artisan db:seed --class=CdSystemSeeder
php artisan db:seed --class=SiteDataSeeder
php artisan db:seed --class=AssetsSeeder
```

### Actualización de Assets
```bash
php artisan project:update-assets public/cd-project/assets --backup --project="[NOMBRE_PROYECTO]"
```

### Limpieza de Caché
```bash
php artisan optimize:clear
php artisan config:clear
php artisan cache:clear
php artisan view:clear
```

### Verificación
```bash
# Ver configuración del sistema
php artisan tinker
>>> config('cd-system.theme.demo')
>>> config('cd-system.modules.services.active')

# Ver datos del sitio
>>> config('site.name')
>>> config('site.contact.email')
```

---

## 📚 12. Archivos de Configuración Relacionados

### Archivos PHP de Configuración
- `config/cd-system.php` - Estructura base del sistema (NO modificar directamente)
- `config/site.php` - Estructura base del sitio (NO modificar directamente)

**IMPORTANTE:** Estos archivos contienen la estructura base. Los valores específicos del proyecto se cargan desde la base de datos mediante los seeders.

### Servicios de Configuración
- `App\Services\CdSystemConfigService` - Maneja configuración del sistema
- `App\Services\SiteConfigService` - Maneja configuración del sitio

### Providers
- `CdSystemConfigServiceProvider` - Carga configuración del sistema desde DB
- `SiteConfigServiceProvider` - Carga configuración del sitio desde DB

---

## ⚠️ 13. Consideraciones Importantes

### Base de Datos Multitenant
- Cada proyecto tiene su propia base de datos
- Los seeders se ejecutan por proyecto
- La configuración se guarda en la tabla `settings` con prefijos:
  - `cd-system.*` para configuración del sistema
  - `site.*` para configuración del sitio

### Orden de Ejecución
- Los seeders deben ejecutarse en el orden correcto
- `CdSystemSeeder` debe ejecutarse primero (otros seeders pueden depender de él)
- `SiteDataSeeder` debe ejecutarse antes de seeders de contenido

### Assets y Cloudinary
- Los assets pueden estar localmente o en Cloudinary
- Si están en Cloudinary, se resuelven automáticamente desde la tabla `assets`
- Las rutas en los JSONs pueden ser relativas o URLs completas

### Demo y Vistas
- Cada demo tiene sus propias vistas en:
  - `resources/views/modules/cd-base/frontend/demos/[demo-name]/`
  - `resources/views/layout/front/headers/[demo-name].blade.php`
  - `resources/views/layout/front/footers/[demo-name].blade.php`

### Módulos y Rutas
- Los módulos activos determinan qué rutas están disponibles
- Las rutas se definen en `routes/modules/[module-name].php`
- Los módulos inactivos no cargan sus rutas

---

## 🔍 14. Troubleshooting

### El demo no se carga correctamente
1. Verificar que `cd-system.json` tiene el demo correcto
2. Verificar que `CdSystemSeeder` se ejecutó correctamente
3. Limpiar caché: `php artisan optimize:clear`
4. Verificar que existen las vistas del demo

### Los módulos no aparecen
1. Verificar que están activos en `cd-system.json`
2. Verificar que `CdSystemSeeder` se ejecutó
3. Verificar que las rutas del módulo están registradas
4. Limpiar caché de rutas: `php artisan route:clear`

### Los datos del proyecto no se muestran
1. Verificar que `SiteDataSeeder` se ejecutó
2. Verificar el contenido de `site-data.json`
3. Verificar en la BD: `SELECT * FROM settings WHERE key LIKE 'site.%'`

### Los assets no se cargan
1. Verificar que los archivos físicos existen en `public/cd-project/assets/`
2. Verificar que `AssetsSeeder` se ejecutó
3. Ejecutar comando de actualización de assets
4. Verificar permisos de archivos

---

## 📝 15. Ejemplo de Uso Completo

### Paso 1: Completar Plantilla de Datos

```
Proyecto: Mi Nuevo Proyecto
Demo: demo-restaurant
Módulos activos: blog, services, faqs

Datos de contacto:
  - Teléfono: +1234567890
  - WhatsApp: +1234567890
  - Email: contacto@minuevoproyecto.com
```

### Paso 2: Configurar Archivos JSON

1. **cd-system.json**: Configurar demo y módulos activos
2. **site-data.json**: Poblar con datos del proyecto
3. **services.json**: Si services está activo
4. **faqs.json**: Si faqs está activo
5. **blog.json**: Si blog está activo

### Paso 3: Ejecutar Setup

```bash
php artisan migrate:fresh --seed
```

### Paso 4: Verificar

- Demo carga correctamente
- Módulos activos funcionan
- Datos del proyecto se muestran
- Assets se cargan

---

## ✅ Conclusión

Esta guía es una **plantilla reutilizable** para configurar cualquier nuevo proyecto en CD-System. 

**Para usar este documento:**

1. Completa la sección "🎯 Plantilla de Datos del Proyecto" con los datos específicos
2. Sigue las secciones numeradas reemplazando los placeholders `[VALOR]` con datos reales
3. Usa el checklist para asegurar que todo está configurado
4. Ejecuta los comandos necesarios

Cada proyecto puede tener:
- Diferentes demos
- Diferentes módulos activos
- Diferentes datos de contacto
- Diferentes redes sociales
- Diferente contenido por módulo

**Todo es configurable mediante los archivos JSON en `database/seeders/project-data/`**

---

**Última actualización:** Enero 2026  
**Versión del sistema:** CD-System 2.0.0
