# Adaptación de CD-System a Proyectos

Guía completa sobre cómo CD-System se adapta a un proyecto específico, qué archivos se modifican, y qué configuraciones son necesarias.

---

## 📋 Tabla de Contenidos

1. [Proceso de Adaptación](#proceso-de-adaptación)
2. [Archivos de Configuración](#archivos-de-configuración)
3. [Archivos Específicos del Proyecto](#archivos-específicos-del-proyecto)
4. [Assets y Recursos](#assets-y-recursos)
5. [Datos y Seeders](#datos-y-seeders)
6. [Checklist de Adaptación](#checklist-de-adaptación)

---

## 🔄 Proceso de Adaptación

### Visión General

Cuando CD-System se adapta a un proyecto específico, se realizan las siguientes adaptaciones:

1. **Configuración del Demo**: Selección del demo/template visual
2. **Activación de Módulos**: Habilitar/deshabilitar módulos según necesidades
3. **Personalización de Identidad**: Logos, favicons, colores, textos
4. **Carga de Datos**: Datos específicos del proyecto (servicios, blog, equipo, etc.)
5. **Ajustes de Vistas**: Personalizaciones menores en vistas si es necesario

### Flujo de Adaptación

```
┌─────────────────────────────────────────┐
│  1. Configuración Inicial               │
│     - Demo seleccionado                  │
│     - Módulos activados                 │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│  2. Personalización de Identidad        │
│     - Logos y favicons                   │
│     - Colores y skins                    │
│     - Textos y contenido                 │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│  3. Carga de Datos                      │
│     - Servicios/Productos               │
│     - Blog/Noticias                      │
│     - Equipo                            │
│     - Referencias                        │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│  4. Verificación y Ajustes              │
│     - Testing funcional                  │
│     - Ajustes visuales                  │
│     - Optimizaciones                    │
└─────────────────────────────────────────┘
```

---

## ⚙️ Archivos de Configuración

### 1. `config/cd-system.php` ⚠️ PROTEGIDO

**Estado**: Archivo PROTEGIDO - NO se propaga del proyecto al core

**Propósito**: Configuración específica del proyecto

**Adaptaciones necesarias**:

```php
// 1. Demo activo
'theme' => [
    'demo' => 'demo-law-firm-2',  // ← Cambiar según proyecto
    'skin' => 'auto',
],

// 2. Módulos activos/inactivos
'modules' => [
    'blog' => ['active' => true],
    'services' => ['active' => true],
    'products' => ['active' => false],  // ← Desactivar si no se usa
    // ...
],
```

**Comando para configurar**:
```bash
php artisan project:configure-modules --demo=demo-law-firm-2 --modules=blog,services,team,references
```

### 2. `config/site.php`

**Estado**: Puede ser sobrescrito por proyecto (pero tiene valores base)

**Propósito**: Identidad del sitio, contacto, assets

**Adaptaciones típicas**:

```php
// Identidad
'name' => 'Law Firm',
'url' => 'https://lawfirm.example.com',
'author' => 'Law Firm',

// Contacto
'contact' => [
    'email' => 'contacto@lawfirm.com',
    'phone' => '+54 11 1234-5678',
    'address' => 'Calle Principal 123',
],

// Assets
'assets' => [
    'favicon' => 'cd-project/img/favicon/favicon.ico',
    'main_logo' => 'cd-project/img/logos/logo.png',
    // ...
],
```

**Comando para actualizar assets**:
```bash
php artisan project:update-assets public/cd-project/assets --backup
```

### 3. `config/projectTexts.json` (Opcional)

**Estado**: Específico del proyecto - NO se propaga

**Propósito**: Textos y redacciones específicas del proyecto

**Estructura**:
```json
{
  "welcome": {
    "title": "Bienvenido a Law Firm",
    "subtitle": "Servicios legales profesionales"
  },
  "about": {
    "main_title": "Sobre Nosotros",
    "content": "..."
  }
}
```

---

## 📁 Archivos Específicos del Proyecto

### 1. Vistas del Demo

**Ubicación**: `resources/views/modules/{module}/frontend/demos/{demo}/`

**Ejemplo para law-firm-2**:
```
resources/views/modules/cd-base/frontend/demos/demo-law-firm-2/
└── welcome.blade.php
```

**Nota**: Si no existe vista específica del demo, se usa la vista genérica del módulo.

### 2. Layouts Específicos

**Ubicación**: `resources/views/layout/front/{component}s/`

**Ejemplo**:
```
resources/views/layout/front/
├── headers/
│   ├── demo-law-firm-2.blade.php  ← Específico del demo
│   └── default.blade.php           ← Fallback
└── footers/
    ├── demo-law-firm-2.blade.php   ← Específico del demo
    └── default.blade.php            ← Fallback
```

### 3. Assets del Proyecto

**Ubicación**: `public/cd-project/`

**Estructura**:
```
public/cd-project/
├── img/
│   ├── logos/
│   │   ├── logo.png
│   │   ├── logo-2.png
│   │   └── logo-alternative.png
│   ├── favicon/
│   │   ├── favicon.ico
│   │   ├── apple-touch-icon.png
│   │   └── ...
│   └── demos/
│       └── law-firm-2/
│           ├── slides/
│           ├── team/
│           └── ...
└── css/ (si hay CSS custom)
```

---

## 🎨 Assets y Recursos

### Logos Requeridos

| Archivo | Ubicación | Uso |
|---------|-----------|-----|
| `logo.png` | `public/cd-project/img/logos/` | Logo principal (header) |
| `logo-2.png` | `public/cd-project/img/logos/` | Logo alternativo (loader) |
| `logo-alternative.png` | `public/cd-project/img/logos/` | Logo footer |

### Favicons Requeridos

| Archivo | Ubicación | Tamaño |
|---------|-----------|--------|
| `favicon.ico` | `public/cd-project/img/favicon/` | 16x16, 32x32 |
| `apple-touch-icon.png` | `public/cd-project/img/favicon/` | 180x180 |
| `favicon.svg` | `public/cd-project/img/favicon/` | SVG |
| `web-app-manifest-192x192.png` | `public/cd-project/img/favicon/` | 192x192 |
| `web-app-manifest-512x512.png` | `public/cd-project/img/favicon/` | 512x512 |

### Actualización de Assets

**Comando**:
```bash
php artisan project:update-assets {source_dir} [--backup] [--project=PROJECT]
```

**Ejemplo**:
```bash
php artisan project:update-assets public/cd-project/assets --backup --project="law-firm"
```

**Proceso**:
1. Valida directorio fuente
2. Crea backup (si `--backup`)
3. Copia logos a ubicaciones finales
4. Copia favicons a ubicaciones finales
5. Procesa skins CSS (si existen)

---

## 📊 Datos y Seeders

### Archivos JSON de Datos

**Ubicación**: `database/seeders/project-data/`

**Archivos requeridos según módulos activos**:

| Módulo | Archivo JSON | Descripción |
|--------|--------------|-------------|
| `services` | `services.json` | Servicios/Áreas de actuación |
| `blog` | `blog.json` | Posts y categorías del blog |
| `team` | `team.json` | Miembros del equipo |
| `references` | `references.json` | Referencias/Clientes |

### Estructura de Datos

#### services.json
```json
{
  "services": [
    {
      "title": "Family Law",
      "slug": "family-law",
      "description": "...",
      "logo": "cd-project/img/demos/law-firm-2/icons/icon-1.svg",
      "is_active": true,
      "is_featured": true
    }
  ]
}
```

#### blog.json
```json
{
  "post_categories": [
    {
      "name": "Legal News",
      "slug": "legal-news",
      "description": "..."
    }
  ],
  "posts": [
    {
      "title": "Article Title",
      "slug": "article-title",
      "description": "...",
      "content": "<p>...</p>",
      "status": "published",
      "category_id": 1
    }
  ]
}
```

### Carga de Datos

**Opción 1: Cargar todos los módulos**
```bash
php artisan modules:refresh --clean
```

**Opción 2: Cargar módulos individualmente**
```bash
php artisan services:refresh --clean
php artisan blog:refresh --clean
php artisan team:refresh --clean
php artisan references:refresh --clean
```

**Opción 3: Cargar módulos específicos**
```bash
php artisan modules:refresh --clean --modules=services --modules=blog
```

---

## ✅ Checklist de Adaptación

### Pre-Configuración

- [ ] Laravel instalado y funcionando
- [ ] Base de datos configurada
- [ ] Migraciones ejecutadas: `php artisan migrate`
- [ ] Usuarios creados: `php artisan db:seed --class=UsersSeeder`

### Configuración del Sistema

- [ ] `config/cd-system.php` configurado con demo correcto
- [ ] Módulos activados/desactivados según necesidades
- [ ] `config/site.php` actualizado con identidad del proyecto
- [ ] `config/projectTexts.json` creado (si se usa)

### Assets

- [ ] Logos preparados y actualizados
- [ ] Favicons preparados y actualizados
- [ ] Imágenes del demo en `public/cd-project/img/demos/{demo}/`
- [ ] CSS custom (si aplica) en ubicación correcta

### Datos

- [ ] Archivos JSON creados en `database/seeders/project-data/`
- [ ] Estructura JSON validada
- [ ] Rutas de imágenes verificadas
- [ ] Datos cargados: `php artisan modules:refresh --clean`

### Vistas y Layouts

- [ ] Vistas específicas del demo creadas (si aplica)
- [ ] Layouts header/footer específicos creados (si aplica)
- [ ] Vistas de módulos funcionando correctamente

### Verificación Final

- [ ] Homepage muestra contenido correctamente
- [ ] Módulos activos funcionan (blog, services, team, etc.)
- [ ] Rutas funcionan correctamente
- [ ] Imágenes se cargan correctamente
- [ ] Meta tags configurados
- [ ] SEO básico verificado

---

## 🔍 Separación Core vs Proyecto

### Archivos Core (NO se modifican por proyecto)

- `app/Core/` - Componentes core
- `app/helpers.php` - Helpers globales
- `app/Modules/` - Código de módulos
- `routes/` - Rutas base
- `config/cd-system.php` (versión base, se sobrescribe en proyecto)

### Archivos Proyecto (Específicos del proyecto)

- `config/cd-system.php` (versión del proyecto)
- `config/site.php` (puede sobrescribirse)
- `config/projectTexts.json`
- `database/seeders/project-data/*.json`
- `resources/views/modules/*/frontend/demos/{demo}/`
- `resources/views/layout/front/{component}s/{demo}.blade.php`
- `public/cd-project/img/` (assets del proyecto)

---

## 📚 Referencias

- [Sistema Base](./01-sistema-base.md)
- [Producto Law Firm 2](./03-producto-law-firm-2.md)
- [Configuraciones](./04-configuraciones.md)
- [Datos Requeridos para Proyecto](./06-datos-requeridos-proyecto.md) ⭐ **Ver lista completa de datos requeridos**
- [Guía Setup Law Firm](../law-firm-setup-guide.md)

---

**Última actualización**: 2025-01-XX  
**Versión del documento**: 1.0.0

