# 📋 Referencia del JSON: create-complete-project.sh

## 📝 Estructura Completa

```json
{
  "project": {
    "name": "string (requerido)",
    "repository_url": "string (opcional)",
    "branch": "string (opcional)",
    "vps": { ... },
    "database": { ... }
  },
  "identity": {
    "site_name": "string (opcional)",
    "site_url": "string (opcional)",
    "contact_email": "string (opcional)",
    "seo_description": "string (opcional)",
    "author": "string (opcional)"
  },
  "system": {
    "demo": "string (opcional)",
    "modules": { ... }
  },
  "assets": {
    "has_assets": "boolean (opcional)",
    "assets_path": "string (opcional)",
    "update_assets": "boolean (opcional)",
    "create_backup": "boolean (opcional)",
    "auto_detect": "boolean (opcional)"
  },
  "options": {
    "skip_push": "boolean (opcional)",
    "skip_verification": "boolean (opcional)",
    "verbose": "boolean (opcional)"
  }
}
```

---

## 📦 Sección: `project`

### `project.name` ✅ **REQUERIDO**

- **Tipo:** `string`
- **Descripción:** Nombre del proyecto
- **Restricciones:** Solo letras, números, guiones (`-`) y guiones bajos (`_`)
- **Ejemplo:** `"mi-proyecto"`, `"cokecolombres"`, `"terashe"`

### `project.repository_url` (Opcional)

- **Tipo:** `string`
- **Default:** `"https://github.com/LACOMPANIADIGITAL/{name}.git"`
- **Descripción:** URL del repositorio en GitHub
- **Ejemplo:** `"https://github.com/LACOMPANIADIGITAL/mi-proyecto.git"`

### `project.branch` (Opcional)

- **Tipo:** `string`
- **Default:** `"cd-system"`
- **Descripción:** Rama a clonar desde CD-System
- **Ejemplo:** `"cd-system"`, `"main"`

### `project.vps` (Opcional)

Configuración para VPS (no se usa en local, pero puede estar presente):

```json
"vps": {
  "domain": "mi-proyecto.bewpro.com",
  "cpanel_username": "mi-proyecto",
  "cpanel_password": "",
  "cpanel_plan": "default",
  "cpanel_email": "admin@example.com",
  "cpanel_quota": 0
}
```

### `project.database` (Opcional)

```json
"database": {
  "name": "bewpro-mi-proyecto",        // Default: "bewpro-{name}"
  "username": "",                       // Solo si is_cpanel=true
  "password": "",                       // Solo si is_cpanel=true
  "create": true,                      // Crear BD automáticamente
  "is_cpanel": false,                  // true para VPS, false para local
  "google_analytics_id": ""            // Solo si is_cpanel=true
}
```

**Nota:** En local, el script configura automáticamente:
- `DB_USERNAME=root`
- `DB_PASSWORD=` (vacío)
- `APP_ENV=local`

---

## 🏷️ Sección: `identity`

Configuración de identidad del sitio (se actualiza en `config/site.php`):

### `identity.site_name` (Opcional)

- **Tipo:** `string`
- **Default:** `{project.name}`
- **Descripción:** Nombre del sitio web
- **Ejemplo:** `"Mi Empresa"`, `"Alisos Club"`

### `identity.site_url` (Opcional)

- **Tipo:** `string`
- **Default:** `"www.{project.name}.com"`
- **Descripción:** URL del sitio web
- **Ejemplo:** `"https://mi-empresa.com"`, `"www.mi-empresa.com"`

### `identity.contact_email` (Opcional)

- **Tipo:** `string`
- **Default:** `"contacto@{project.name}.com"`
- **Descripción:** Email de contacto
- **Ejemplo:** `"contacto@mi-empresa.com"`

### `identity.seo_description` (Opcional)

- **Tipo:** `string`
- **Default:** `"Sitio web de {site_name}"`
- **Descripción:** Descripción SEO del sitio
- **Ejemplo:** `"Sitio web oficial de Mi Empresa"`

### `identity.author` (Opcional)

- **Tipo:** `string`
- **Default:** `{site_name}`
- **Descripción:** Autor del sitio
- **Ejemplo:** `"Mi Empresa"`

---

## ⚙️ Sección: `system`

### `system.demo` (Opcional)

- **Tipo:** `string`
- **Default:** `"demo-construction"`
- **Descripción:** Demo a usar (configura `config/cd-system.php`)
- **Valores comunes:**
  - `"demo-construction"`
  - `"demo-law-firm-2"`
  - `"demo-architecture-2"`
  - `"demo-transportation-logistic"`
  - Ver más demos en `public/template/css/demos/`

### `system.modules` (Opcional)

Configuración de módulos a activar/desactivar:

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

**Módulos disponibles:**
- `blog` - Blog del sitio
- `products` - Productos/Catálogo
- `services` - Servicios
- `projects` - Proyectos/Portfolio
- `gallery` - Galería de imágenes
- `newsletter` - Newsletter/Suscripciones
- `faqs` - Preguntas frecuentes
- `team` - Equipo/Miembros
- `about` - Acerca de
- `contact` - Contacto
- `news` - Noticias
- `references` - Referencias/Testimonios

---

## 🎨 Sección: `assets`

### `assets.has_assets` (Opcional)

- **Tipo:** `boolean`
- **Default:** `false`
- **Descripción:** Si tienes assets listos para procesar
- **Ejemplo:** `true`, `false`

### `assets.assets_path` (Opcional)

- **Tipo:** `string`
- **Default:** `"~/Desktop/assets-{name}"`
- **Descripción:** Ruta a la carpeta con assets (logos, favicons, etc.)
- **Ejemplo:** `"/Users/usuario/Desktop/assets-mi-proyecto"`, `"~/Desktop/assets-mi-proyecto"`

**Assets esperados:**
- `logo.png` - Logo principal
- `logo-2.png` - Logo alternativo
- `favicon.ico` - Favicon
- Otros archivos (`.svg`, `.css`, `.webmanifest`, etc.)

### `assets.update_assets` (Opcional)

- **Tipo:** `boolean`
- **Default:** `true`
- **Descripción:** Si actualizar assets automáticamente
- **Ejemplo:** `true`, `false`

### `assets.create_backup` (Opcional)

- **Tipo:** `boolean`
- **Default:** `true`
- **Descripción:** Si crear backup antes de actualizar assets
- **Ejemplo:** `true`, `false`

### `assets.auto_detect` (Opcional)

- **Tipo:** `boolean`
- **Default:** `true`
- **Descripción:** Si detectar assets automáticamente en `public/cd-project/assets/`
- **Ejemplo:** `true`, `false`

---

## ⚙️ Sección: `options`

### `options.skip_push` (Opcional)

- **Tipo:** `boolean`
- **Default:** `false`
- **Descripción:** Si omitir push inicial a GitHub
- **Ejemplo:** `true`, `false`

### `options.skip_verification` (Opcional)

- **Tipo:** `boolean`
- **Default:** `false`
- **Descripción:** Si omitir verificación final del proyecto
- **Ejemplo:** `true`, `false`

### `options.verbose` (Opcional)

- **Tipo:** `boolean`
- **Default:** `true`
- **Descripción:** Si mostrar output detallado
- **Ejemplo:** `true`, `false`

---

## 📝 Ejemplo Completo

```json
{
  "project": {
    "name": "mi-proyecto",
    "repository_url": "https://github.com/LACOMPANIADIGITAL/mi-proyecto.git",
    "branch": "cd-system",
    "database": {
      "name": "bewpro-mi-proyecto",
      "is_cpanel": false
    }
  },
  "identity": {
    "site_name": "Mi Proyecto",
    "site_url": "https://mi-proyecto.com",
    "contact_email": "contacto@mi-proyecto.com",
    "seo_description": "Sitio web oficial de Mi Proyecto",
    "author": "Mi Proyecto"
  },
  "system": {
    "demo": "demo-construction",
    "modules": {
      "blog": true,
      "products": false,
      "services": true,
      "projects": true,
      "gallery": false,
      "newsletter": false,
      "faqs": true,
      "team": false,
      "about": true,
      "contact": true,
      "news": false,
      "references": false
    }
  },
  "assets": {
    "has_assets": true,
    "assets_path": "/Users/usuario/Desktop/assets-mi-proyecto",
    "update_assets": true,
    "create_backup": true,
    "auto_detect": false
  },
  "options": {
    "skip_push": false,
    "skip_verification": false,
    "verbose": true
  }
}
```

---

## 🔍 Validación

El script valida:

- ✅ `project.name` es requerido y no puede estar vacío
- ✅ `project.name` solo contiene letras, números, guiones y guiones bajos
- ✅ JSON es válido (sintaxis correcta)
- ✅ `jq` está instalado (para modo JSON)

---

## 📚 Referencias

- [Guía de Uso](./01-guia-uso.md)
- [Ejemplos](./04-ejemplos.md)
- Template: `scripts/local-project-template.json`

---

**Siguiente:** [Guía Técnica](./03-guia-tecnica.md)

