# Datos Requeridos para Nuevo Proyecto

Documentación completa de todos los datos, configuraciones y archivos requeridos para configurar un nuevo proyecto en CD-System, separando claramente lo que es del **Sistema Base** y lo que es **Específico del Producto/Demo**.

---

## 📋 Tabla de Contenidos

1. [Separación: Sistema Base vs Producto](#separación-sistema-base-vs-producto)
2. [Sistema Base - Datos Requeridos](#sistema-base-datos-requeridos)
3. [Producto/Demo - Datos Requeridos](#productodemo-datos-requeridos)
4. [Checklist Completo](#checklist-completo)
5. [Ejemplo: Law Firm 2](#ejemplo-law-firm-2)

---

## 🎯 Separación: Sistema Base vs Producto

### Sistema Base (Core)
**Características**:
- ✅ Requerido para **TODOS** los proyectos
- ✅ Independiente del demo seleccionado
- ✅ Independiente de los módulos activados
- ✅ Configuración mínima para que el sistema funcione

### Producto/Demo Específico
**Características**:
- ❌ Requerido según el **demo seleccionado**
- ❌ Requerido según los **módulos activados**
- ❌ Datos y assets específicos del tipo de proyecto
- ❌ Personalizaciones visuales y de contenido

---

## 🧩 Sistema Base - Datos Requeridos

### 1. Configuración del Sistema

#### `config/cd-system.php` (Versión Proyecto)

**Ubicación**: `config/cd-system.php`

**Datos Mínimos Requeridos**:

```php
return [
    // 1. DEMO (OBLIGATORIO)
    'theme' => [
        'demo' => 'demo-law-firm-2',  // ← Cambiar según proyecto
        'skin' => 'auto',              // Auto-detecta según demo
    ],
    
    // 2. MÓDULOS (OBLIGATORIO - definir activos/inactivos)
    'modules' => [
        'blog' => ['active' => true],
        'services' => ['active' => true],
        'team' => ['active' => true],
        'references' => ['active' => true],
        'faqs' => ['active' => true],
        'about' => ['active' => true],
        'contact' => ['active' => true],
        // Módulos desactivados
        'products' => ['active' => false],
        'projects' => ['active' => false],
        'gallery' => ['active' => false],
        'newsletter' => ['active' => false],
        'news' => ['active' => false],
    ],
];
```

**Comando para configurar**:
```bash
php artisan project:configure-modules --demo={demo} --modules={modules}
```

---

### 2. Configuración de Identidad

#### `config/site.php` (Personalización)

**Ubicación**: `config/site.php`

**Datos Mínimos Requeridos**:

```php
return [
    // IDENTIDAD (OBLIGATORIO)
    'name' => 'Law Firm',                    // ← Nombre del sitio
    'url' => 'https://lawfirm.example.com',  // ← URL del sitio
    'author' => 'Law Firm',                  // ← Autor/Propietario
    
    // SEO BÁSICO (OBLIGATORIO)
    'seo' => [
        'keywords' => 'law firm, abogados, servicios legales',
        'description' => 'Bufete de abogados especializado en...',
        'title_template' => '{title} | {site_name}',
        'language' => 'es_AR',
        'robots' => 'index, follow',
    ],
    
    // OPEN GRAPH (OBLIGATORIO)
    'og' => [
        'enabled' => true,
        'title' => 'Law Firm',
        'description' => 'Bufete de abogados especializado...',
        'image' => 'cd-project/img/meta-tags/og-image.png',
        'image_width' => 1200,
        'image_height' => 630,
        'image_type' => 'image/png',
        'site_name' => 'Law Firm',
        'locale' => 'es_AR',
    ],
    
    // TWITTER CARD (OBLIGATORIO)
    'twitter' => [
        'enabled' => true,
        'card' => 'summary_large_image',
        'title' => 'Law Firm',
        'description' => 'Bufete de abogados especializado...',
        'image' => 'cd-project/img/meta-tags/twitter-image.png',
    ],
    
    // CONTACTO (OBLIGATORIO)
    'contact' => [
        'email' => 'contacto@lawfirm.com',
        'phone' => '+54 11 1234-5678',
        'phone_number' => '+54 11 1234-5678',
        'address' => 'Calle Principal 123, Ciudad',
        'schedule' => 'Lunes a Viernes 9:00 - 18:00',
    ],
    
    // ASSETS (OBLIGATORIO)
    'assets' => [
        'favicon' => 'cd-project/img/favicon/favicon.ico',
        'apple_touch_icon' => 'cd-project/img/favicon/apple-touch-icon.png',
        'loader_logo' => 'cd-project/img/logos/logo-2.png',
        'main_logo' => 'cd-project/img/logos/logo.png',
        'main_logo_sticky' => 'cd-project/img/logos/logo.png',
        'footer_logo' => 'cd-project/img/logos/logo-alternative.png',
        'main_logo_alt' => 'Law Firm',
        'main_logo_height' => 60,
    ],
    
    // REDES SOCIALES (OPCIONAL pero recomendado)
    'social_media' => [
        'linkedin' => [
            'url' => 'https://www.linkedin.com/company/lawfirm',
            'icon' => 'fab fa-linkedin-in',
            'active' => true,
        ],
        'facebook' => [
            'url' => 'https://www.facebook.com/lawfirm',
            'icon' => 'fab fa-facebook-f',
            'active' => true,
        ],
        // ... más redes
    ],
    
    // SCHEMA JSON-LD (OBLIGATORIO para SEO)
    'seo' => [
        'schema' => [
            'enabled' => true,
            'type' => 'LegalService',  // o 'Organization', 'LocalBusiness', etc.
            'name' => 'Law Firm',
            'url' => 'https://lawfirm.example.com',
            'logo' => 'cd-project/img/logos/logo.png',
            'description' => 'Bufete de abogados...',
            'contact_point' => [
                'enabled' => true,
                'telephone' => '+54 11 1234-5678',
                'contact_type' => 'customer service',
                'area_served' => 'AR',
                'available_language' => 'Spanish',
            ],
            'same_as' => [
                'https://www.linkedin.com/company/lawfirm',
                'https://www.facebook.com/lawfirm',
            ],
        ],
    ],
];
```

---

### 3. Assets Básicos (Sistema Base)

#### Logos

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

**Archivos Requeridos**:

| Archivo | Tamaño Recomendado | Uso |
|---------|-------------------|-----|
| `logo.png` | Variable (altura: 60px) | Logo principal (header) |
| `logo-2.png` | Variable (max-width: 200px) | Logo loader/pantalla de carga |
| `logo-alternative.png` | Variable | Logo footer |

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

#### Favicons

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

**Archivos Requeridos**:

| Archivo | Tamaño | Uso |
|---------|--------|-----|
| `favicon.ico` | 16x16, 32x32 | Favicon estándar |
| `apple-touch-icon.png` | 180x180 | iOS home screen |
| `favicon.svg` | SVG | Favicon moderno |
| `web-app-manifest-192x192.png` | 192x192 | PWA |
| `web-app-manifest-512x512.png` | 512x512 | PWA |

#### Imágenes Meta Tags

**Ubicación**: `public/cd-project/img/meta-tags/`

**Archivos Requeridos**:

| Archivo | Tamaño | Uso |
|---------|--------|-----|
| `og-image.png` | 1200x630 | Open Graph (Facebook, LinkedIn) |
| `twitter-image.png` | 1200x630 | Twitter Card |

---

### 4. Configuración de Base de Datos

#### Variables de Entorno

**Archivo**: `.env`

**Datos Requeridos**:

```env
APP_NAME="Law Firm"
APP_URL=https://lawfirm.example.com
APP_ENV=production
APP_DEBUG=false

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lawfirm_db
DB_USERNAME=lawfirm_user
DB_PASSWORD=password_seguro

# Google Analytics (opcional)
GOOGLE_ANALYTICS_ID=UA-XXXXXXXXX-X
```

---

## 🎨 Producto/Demo - Datos Requeridos

### 1. Datos según Módulos Activados

#### Módulo: Services

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

**Estructura Requerida**:

```json
{
  "services": [
    {
      "title": "Family Law",
      "slug": "family-law",
      "description": "Comprehensive legal services for family matters...",
      "logo": "cd-project/img/demos/demo-law-firm-2/icons/icon-group.svg",
      "image": null,
      "is_active": true,
      "is_featured": true
    }
  ]
}
```

**Campos Obligatorios**:
- `title` - Nombre del servicio
- `slug` - URL-friendly (único)
- `description` - Descripción del servicio
- `is_active` - Boolean
- `is_featured` - Boolean (para destacar en homepage)

**Carga**:
```bash
php artisan services:refresh --clean
```

---

#### Módulo: Blog

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

**Estructura Requerida**:

```json
{
  "post_categories": [
    {
      "name": "Legal News",
      "slug": "legal-news",
      "description": "Latest legal news and updates"
    }
  ],
  "posts": [
    {
      "title": "Article Title",
      "slug": "article-title",
      "description": "Article description...",
      "content": "<p>Article content...</p>",
      "status": "published",
      "category_id": 1,
      "header": "cd-project/img/demos/demo-law-firm-2/blog/blog-1.jpg"
    }
  ]
}
```

**Campos Obligatorios**:
- `title` - Título del artículo
- `slug` - URL-friendly (único)
- `description` - Descripción/resumen
- `content` - Contenido HTML
- `status` - "published" o "draft"
- `category_id` - ID numérico (1-indexed)

**Carga**:
```bash
php artisan blog:refresh --clean
```

---

#### Módulo: Team

**Archivo**: `database/seeders/project-data/team.json`

**Estructura Requerida**:

```json
{
  "team_categories": [
    {
      "name": "Partners",
      "slug": "partners",
      "description": "Senior partners and founding members"
    }
  ],
  "team_members": [
    {
      "name": "John Doe",
      "position": "Senior Partner & Founder",
      "email": "john.doe@lawfirm.com",
      "description": "Brief description...",
      "details": "Detailed biography...",
      "image": "cd-project/img/demos/demo-law-firm-2/team/team-1.jpg",
      "category_id": 1,
      "is_active": true
    }
  ]
}
```

**Campos Obligatorios**:
- `name` - Nombre completo
- `position` - Cargo/posición
- `email` - Email (clave única)
- `category_id` - ID numérico (1-indexed)

**Carga**:
```bash
php artisan team:refresh --clean
```

---

#### Módulo: References

**Archivo**: `database/seeders/project-data/references.json`

**Estructura Requerida**:

```json
{
  "categories": [
    {
      "name": "Corporate Clients",
      "slug": "corporate-clients"
    }
  ],
  "references": [
    {
      "name": "Company Name",
      "category": "Corporate Clients",
      "logo": "cd-project/img/demos/demo-law-firm-2/references/logo-1.png",
      "featured": true
    }
  ]
}
```

**Campos Obligatorios**:
- `name` - Nombre de la empresa/cliente
- `category` - Nombre exacto de la categoría

**Carga**:
```bash
php artisan references:refresh --clean
```

---

### 2. Assets según Demo

#### Assets del Demo: demo-law-firm-2

**Ubicación**: `public/cd-project/img/demos/demo-law-firm-2/`

**Estructura Requerida**:

```
public/cd-project/img/demos/demo-law-firm-2/
├── slides/                    # Imágenes del carousel principal
│   ├── slide-1.jpg
│   └── slide-2.jpg
├── team/                      # Fotos del equipo
│   ├── team-1.jpg
│   └── team-2.jpg
├── icons/                     # Iconos de servicios
│   ├── icon-group.svg
│   ├── icon-exchange.svg
│   └── icon-magnific-dollar.svg
├── references/                # Logos de referencias
│   ├── logo-1.png
│   └── logo-2.png
├── backgrounds/               # Imágenes de fondo
│   └── background-2.jpg
├── generic/                   # Imágenes genéricas
│   └── generic-1.jpg
└── blog/                      # Imágenes del blog
    └── blog-1.jpg
```

**Nota**: La estructura varía según el demo. Cada demo puede requerir assets diferentes.

---

### 3. Vistas Específicas del Demo

#### Vista Homepage

**Ubicación**: `resources/views/modules/cd-base/frontend/demos/{demo}/welcome.blade.php`

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

**Contenido**: Vista personalizada del homepage según el demo.

**Nota**: Si no existe, se usa la vista genérica.

---

#### Layouts Específicos

**Headers**: `resources/views/layout/front/headers/{demo}.blade.php`

**Footers**: `resources/views/layout/front/footers/{demo}.blade.php`

**Ejemplo**:
- `resources/views/layout/front/headers/demo-law-firm-2.blade.php`
- `resources/views/layout/front/footers/demo-law-firm-2.blade.php`

**Nota**: Si no existen, se usan los layouts default.

---

### 4. Configuración de Page Headers (Opcional)

**Archivo**: `config/page-headers.php`

**Configuración por Módulo y Demo**:

```php
return [
    'demo-law-firm-2' => [
        'default_type' => 'modern',
        'modules' => [
            'services' => 'modern',
            'blog' => 'modern',
            'team' => 'modern',
        ],
    ],
];
```

**Nota**: Si no se configura, se usan valores por defecto.

---

### 5. Textos Específicos (Opcional)

**Archivo**: `config/projectTexts.json`

**Estructura**:

```json
{
  "welcome": {
    "title": "Bienvenido a Law Firm",
    "subtitle": "Servicios legales profesionales"
  },
  "about": {
    "main_title": "Sobre Nosotros",
    "main_subtitle": "Nuestro bufete"
  }
}
```

**Nota**: Si no existe, se usan valores de `config/site.php`.

---

## ✅ Checklist Completo

### Sistema Base (Obligatorio para TODOS los proyectos)

#### Configuración
- [ ] `config/cd-system.php` - Demo configurado
- [ ] `config/cd-system.php` - Módulos activados/desactivados
- [ ] `config/site.php` - Identidad (name, url, author)
- [ ] `config/site.php` - SEO básico (keywords, description)
- [ ] `config/site.php` - Open Graph configurado
- [ ] `config/site.php` - Twitter Card configurado
- [ ] `config/site.php` - Contacto (email, phone, address)
- [ ] `config/site.php` - Assets (logos, favicons)
- [ ] `config/site.php` - Schema JSON-LD configurado
- [ ] `.env` - Variables de entorno configuradas

#### Assets Básicos
- [ ] `public/cd-project/img/logos/logo.png` - Logo principal
- [ ] `public/cd-project/img/logos/logo-2.png` - Logo loader
- [ ] `public/cd-project/img/logos/logo-alternative.png` - Logo footer
- [ ] `public/cd-project/img/favicon/favicon.ico` - Favicon
- [ ] `public/cd-project/img/favicon/apple-touch-icon.png` - Apple touch icon
- [ ] `public/cd-project/img/favicon/favicon.svg` - Favicon SVG
- [ ] `public/cd-project/img/favicon/web-app-manifest-192x192.png` - PWA 192
- [ ] `public/cd-project/img/favicon/web-app-manifest-512x512.png` - PWA 512
- [ ] `public/cd-project/img/meta-tags/og-image.png` - Open Graph image
- [ ] `public/cd-project/img/meta-tags/twitter-image.png` - Twitter image

---

### Producto/Demo Específico

#### Según Módulos Activados

**Si `services` está activo**:
- [ ] `database/seeders/project-data/services.json` - Datos de servicios
- [ ] Iconos de servicios en ubicación correcta

**Si `blog` está activo**:
- [ ] `database/seeders/project-data/blog.json` - Posts y categorías
- [ ] Imágenes de posts en ubicación correcta

**Si `team` está activo**:
- [ ] `database/seeders/project-data/team.json` - Miembros del equipo
- [ ] Fotos del equipo en ubicación correcta

**Si `references` está activo**:
- [ ] `database/seeders/project-data/references.json` - Referencias
- [ ] Logos de referencias en ubicación correcta

**Si `faqs` está activo**:
- [ ] FAQs creadas (desde admin o seeder)

#### Según Demo Seleccionado

**Assets del Demo**:
- [ ] Imágenes del carousel (si aplica)
- [ ] Imágenes de fondo (si aplica)
- [ ] Assets específicos del demo en `public/cd-project/img/demos/{demo}/`

**Vistas del Demo** (Opcional):
- [ ] `resources/views/modules/cd-base/frontend/demos/{demo}/welcome.blade.php`
- [ ] `resources/views/layout/front/headers/{demo}.blade.php`
- [ ] `resources/views/layout/front/footers/{demo}.blade.php`

**Configuración del Demo** (Opcional):
- [ ] `config/page-headers.php` - Configuración de headers por módulo
- [ ] `config/projectTexts.json` - Textos específicos

---

## 📝 Ejemplo: Law Firm 2

### Sistema Base

```php
// config/cd-system.php
'theme' => ['demo' => 'demo-law-firm-2'],
'modules' => [
    'blog' => ['active' => true],
    'services' => ['active' => true],
    'team' => ['active' => true],
    'references' => ['active' => true],
    'faqs' => ['active' => true],
    'about' => ['active' => true],
    'contact' => ['active' => true],
],
```

```php
// config/site.php
'name' => 'Law Firm',
'url' => 'https://lawfirm.example.com',
'contact' => ['email' => 'contacto@lawfirm.com'],
'assets' => [
    'main_logo' => 'cd-project/img/logos/logo.png',
    'favicon' => 'cd-project/img/favicon/favicon.ico',
],
```

### Producto Específico

**Datos**:
- ✅ `services.json` - Áreas de actuación legal
- ✅ `blog.json` - Noticias legales
- ✅ `team.json` - Abogados y partners
- ✅ `references.json` - Clientes corporativos

**Assets**:
- ✅ `public/cd-project/img/demos/demo-law-firm-2/slides/` - Carousel
- ✅ `public/cd-project/img/demos/demo-law-firm-2/team/` - Fotos equipo
- ✅ `public/cd-project/img/demos/demo-law-firm-2/icons/` - Iconos servicios

**Vistas**:
- ✅ `resources/views/modules/cd-base/frontend/demos/demo-law-firm-2/welcome.blade.php`

---

## 🔄 Proceso de Configuración

### Paso 1: Sistema Base
1. Configurar `config/cd-system.php` (demo y módulos)
2. Configurar `config/site.php` (identidad, SEO, contacto)
3. Actualizar assets básicos (logos, favicons, meta tags)
4. Configurar `.env`

### Paso 2: Producto/Demo
1. Crear archivos JSON según módulos activados
2. Preparar assets del demo
3. Crear vistas específicas (si aplica)
4. Configurar page headers (si aplica)

### Paso 3: Carga de Datos
1. Cargar datos: `php artisan modules:refresh --clean`
2. Verificar datos cargados
3. Verificar funcionamiento

### Paso 4: Verificación Final
1. Verificar homepage
2. Verificar módulos activos
3. Verificar meta tags
4. Verificar SEO
5. Verificar assets

---

## 📚 Referencias

- [Sistema Base](./01-sistema-base.md)
- [Adaptación a Proyectos](./02-adaptacion-proyecto.md)
- [Producto Law Firm 2](./03-producto-law-firm-2.md)
- [Configuraciones](./04-configuraciones.md)
- [Estructura de Archivos](./05-estructura-archivos.md)

---

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

