# 📖 Guía de Uso: create-complete-project.sh

## 🎯 Objetivo

Esta guía te lleva paso a paso para crear un proyecto completo desde cero usando el script `create-complete-project.sh`.

---

## 📋 Prerrequisitos

Antes de comenzar, asegúrate de tener:

### Requisitos del Sistema

- ✅ **Git** instalado y configurado
- ✅ **Composer** instalado
- ✅ **PHP 8.0+** con extensiones:
  - `fileinfo`
  - `pdo`
  - `mbstring`
  - `xml`
  - `curl`
  - `zip`
  - `gd`
- ✅ **MySQL** corriendo (XAMPP, MAMP, o similar)
- ✅ **jq** instalado (para modo JSON):
  ```bash
  # macOS
  brew install jq
  
  # Linux
  sudo apt-get install jq
  ```

### Requisitos del Proyecto

- ✅ Repositorio en GitHub (opcional, puede estar vacío)
- ✅ Assets del proyecto (opcional, se pueden agregar después)
- ✅ Base de datos MySQL creada o capacidad de crearla

---

## 🚀 Proceso Paso a Paso

### Paso 1: Preparar Assets (Opcional)

Si tienes assets listos (logos, favicons, etc.):

1. Crea una carpeta con tus assets:
   ```bash
   ~/Desktop/assets-mi-proyecto/
   ├── logo.png
   ├── logo-2.png
   ├── favicon.ico
   └── ...
   ```

2. Anota la ruta completa para el JSON

**Nota:** Si no tienes assets ahora, puedes agregarlos después con:
```bash
php artisan project:update-assets [ruta-a-assets] --backup
```

---

### Paso 2: Crear Archivo JSON de Configuración

Copia el template y personalízalo:

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
cp scripts/local-project-template.json mi-proyecto.json
```

Edita `mi-proyecto.json` con tus datos. Ver [Referencia del JSON](./02-referencia-json.md) para detalles.

#### Ejemplo Mínimo

```json
{
  "project": {
    "name": "mi-proyecto",
    "repository_url": "https://github.com/LACOMPANIADIGITAL/mi-proyecto.git"
  },
  "identity": {
    "site_name": "Mi Proyecto",
    "site_url": "https://mi-proyecto.com"
  },
  "system": {
    "demo": "demo-construction"
  },
  "assets": {
    "has_assets": false
  }
}
```

---

### Paso 3: Verificar MySQL

Asegúrate de que MySQL esté corriendo:

```bash
# En XAMPP: Inicia MySQL desde el panel de control
# Verificar conexión:
mysql -u root -e "SELECT 1;"
```

---

### Paso 4: Ejecutar el Script

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
./scripts/create-complete-project.sh mi-proyecto.json
```

El script ejecutará automáticamente:

1. ✅ Creación del proyecto (clonado desde CD-System)
2. ✅ Instalación de dependencias (composer)
3. ✅ Configuración de `.env`
4. ✅ Generación de `APP_KEY`
5. ✅ Ejecución de migraciones y seeders
6. ✅ Configuración de identidad (`config/site.php`)
7. ✅ Configuración de demo y módulos (`config/cd-system.php`)
8. ✅ Procesamiento de assets (si se proporcionaron)

---

### Paso 5: Verificar el Proyecto

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/mi-proyecto

# Verificar rama
git branch
# Debe mostrar: * cd-system

# Verificar archivos críticos
ls -la config/cd-system.php config/site.php .env

# Verificar assets (si se proporcionaron)
ls -la public/cd-project/img/logos/
```

---

### Paso 6: Iniciar el Servidor

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/mi-proyecto
php artisan serve
```

Accede a: `http://127.0.0.1:8000`

**Credenciales de acceso:**
- Email: `admin@mi-proyecto.com`
- Password: `password`

---

## 🔄 Modos de Ejecución

### Modo JSON (Recomendado)

```bash
./scripts/create-complete-project.sh mi-proyecto.json
```

**Ventajas:**
- ✅ No interactivo (automático)
- ✅ Reproducible
- ✅ Configuración completa desde JSON

### Modo Interactivo

```bash
./scripts/create-complete-project.sh
```

**Ventajas:**
- ✅ No requiere JSON
- ✅ Pregunta todo paso a paso
- ✅ Útil para pruebas rápidas

---

## 📝 Campos del JSON Más Importantes

### Requeridos

- `project.name` - Nombre del proyecto (solo letras, números, guiones y guiones bajos)

### Recomendados

- `identity.site_name` - Nombre del sitio
- `identity.site_url` - URL del sitio
- `system.demo` - Demo a usar (ej: `demo-construction`, `demo-law-firm-2`)
- `system.modules.*` - Módulos a activar/desactivar

### Opcionales

- `assets.has_assets` - Si tienes assets listos
- `assets.assets_path` - Ruta a los assets
- `project.database.*` - Configuración de base de datos

Ver [Referencia del JSON](./02-referencia-json.md) para la lista completa.

---

## ✅ Checklist Post-Ejecución

Después de ejecutar el script, verifica:

- [ ] Proyecto creado en el directorio correcto
- [ ] Rama `cd-system` activa
- [ ] `.env` configurado correctamente
- [ ] `APP_KEY` generado
- [ ] Base de datos creada y migraciones ejecutadas
- [ ] `config/site.php` con identidad correcta
- [ ] `config/cd-system.php` con demo y módulos configurados
- [ ] Assets actualizados (si se proporcionaron)
- [ ] Servidor puede iniciar (`php artisan serve`)

---

## 🆘 Problemas Comunes

### Error: "jq no está instalado"

```bash
# macOS
brew install jq

# Linux
sudo apt-get install jq
```

### Error: "MySQL no está corriendo"

```bash
# En XAMPP: Inicia MySQL desde el panel de control
# Verificar:
mysql -u root -e "SELECT 1;"
```

### Error: "APPLICATION IN PRODUCTION"

El script ahora configura automáticamente `APP_ENV=local` en local. Si persiste, verifica `.env`:

```bash
grep APP_ENV .env
# Debe mostrar: APP_ENV=local
```

### Error: "Access denied for user"

Verifica que las credenciales en `.env` sean correctas:

```bash
grep DB_ .env
# En local debe ser:
# DB_USERNAME=root
# DB_PASSWORD=
```

Ver [Troubleshooting](./05-troubleshooting.md) para más problemas.

---

## 📚 Próximos Pasos

1. **Personalizar el proyecto:**
   - Editar contenido en `resources/views/`
   - Configurar módulos en `config/cd-system.php`
   - Actualizar identidad en `config/site.php`

2. **Agregar assets (si no los tenías):**
   ```bash
   php artisan project:update-assets [ruta-a-assets] --backup
   ```

3. **Push inicial (opcional):**
   ```bash
   git push -u origin cd-system
   ```

---

**Siguiente:** [Referencia del JSON](./02-referencia-json.md)

