# 🚀 Flujo Optimizado Completo: Crear Proyecto desde Cero

## 📋 Resumen

Flujo completamente optimizado para crear un proyecto desde cero con identidad adaptada, siguiendo las mejores prácticas de desarrollo.

---

## 🎯 Proceso en 4 Pasos

### Paso 1: Crear Repositorio en GitHub
- Crear repositorio (puede estar vacío)
- Copiar URL

### Paso 2: Preparar JSON con Assets
- Crear archivo JSON con configuración
- **Incluir ruta a assets si los tienes listos**

### Paso 3: Ejecutar Script
```bash
./scripts/create-complete-project.sh mi-proyecto.json
```

### Paso 4: (Opcional) Actualizar Assets Después
Si no los incluiste en el JSON, actualizar después con el script helper.

---

## 📄 Estructura del JSON Optimizada

### Opción A: Con Assets Listos

```json
{
  "project": {
    "name": "cokecolombres",
    "repository_url": "https://github.com/LACOMPANIADIGITAL/cokecolombres.git"
  },
  "identity": {
    "site_name": "Cokecolombres",
    "site_url": "www.cokecolombres.com",
    "contact_email": "contacto@cokecolombres.com"
  },
  "assets": {
    "has_assets": true,
    "assets_path": "/ruta/absoluta/a/tus/assets",
    "update_assets": true,
    "create_backup": true,
    "auto_detect": true
  }
}
```

### Opción B: Sin Assets (Auto-detección)

```json
{
  "project": {
    "name": "cokecolombres",
    "repository_url": "https://github.com/LACOMPANIADIGITAL/cokecolombres.git"
  },
  "identity": {
    "site_name": "Cokecolombres",
    "site_url": "www.cokecolombres.com",
    "contact_email": "contacto@cokecolombres.com"
  },
  "assets": {
    "has_assets": false,
    "auto_detect": true
  }
}
```

Si `auto_detect: true`, el script buscará automáticamente assets en `public/cd-project/assets/` después de crear el proyecto.

---

## 🔄 Flujo Completo Optimizado

### Escenario 1: Assets Listos Antes de Crear Proyecto

```
1. Preparar assets en carpeta externa
   ↓
2. Crear JSON con has_assets: true y assets_path
   ↓
3. Ejecutar: ./create-complete-project.sh mi-proyecto.json
   ↓
4. ✅ Proyecto creado con assets actualizados automáticamente
```

### Escenario 2: Assets Después de Crear Proyecto (Recomendado)

```
1. Crear JSON sin assets (has_assets: false)
   ↓
2. Ejecutar: ./create-complete-project.sh mi-proyecto.json
   ↓
3. Copiar assets a public/cd-project/assets/
   ↓
4. Ejecutar: ./scripts/update-project-assets.sh
   ↓
5. ✅ Assets actualizados
```

### Escenario 3: Auto-detección (Nuevo)

```
1. Crear JSON con auto_detect: true
   ↓
2. Ejecutar: ./create-complete-project.sh mi-proyecto.json
   ↓
3. Si hay assets en public/cd-project/assets/, se actualizan automáticamente
   ↓
4. ✅ Proyecto listo con assets (si existían)
```

---

## 🛠️ Scripts Disponibles

### 1. `create-complete-project.sh` - Creación Completa
```bash
./scripts/create-complete-project.sh mi-proyecto.json
```
- Crea proyecto completo
- Configura todo
- Personaliza identidad
- Actualiza assets (si se proporcionan o auto-detecta)

### 2. `update-project-assets.sh` - Actualizar Assets Después
```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cokecolombres
./scripts/update-project-assets.sh [ruta-a-assets]
```
- Helper script para actualizar assets fácilmente
- Verifica assets requeridos
- Ejecuta comando artisan
- Muestra próximos pasos

---

## 📝 Ejemplo Práctico: cokecolombres

### Paso 1: Crear JSON

```json
{
  "project": {
    "name": "cokecolombres",
    "repository_url": "https://github.com/LACOMPANIADIGITAL/cokecolombres.git"
  },
  "identity": {
    "site_name": "Cokecolombres",
    "site_url": "www.cokecolombres.com",
    "contact_email": "contacto@cokecolombres.com"
  },
  "assets": {
    "has_assets": false,
    "auto_detect": true
  }
}
```

### Paso 2: Ejecutar Creación

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

### Paso 3: Copiar Assets (si los tienes)

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cokecolombres

# Copiar tus assets a la carpeta
cp /ruta/a/tus/assets/* public/cd-project/assets/
```

### Paso 4: Actualizar Assets

```bash
# Opción A: Usar script helper (recomendado)
./scripts/update-project-assets.sh

# Opción B: Comando directo
php artisan project:update-assets public/cd-project/assets --backup --project="cokecolombres"
```

### Paso 5: Commit

```bash
git add public/cd-project/img/
git commit -m "feat: Actualizar assets del proyecto cokecolombres"
```

---

## ✅ Mejoras Implementadas

### 1. Auto-detección de Assets
- Detecta automáticamente assets en `public/cd-project/assets/`
- Actualiza automáticamente si encuentra assets válidos
- Configurable con `auto_detect: true/false` en JSON

### 2. Script Helper para Assets
- `update-project-assets.sh` facilita actualización posterior
- Verifica assets requeridos antes de ejecutar
- Muestra próximos pasos claramente

### 3. Flujo Flexible
- Assets antes de crear (en JSON)
- Assets después de crear (script helper)
- Auto-detección automática

---

## 🎯 Mejores Prácticas

### 1. Organización de Assets
```
tus-assets/
├── logo.png
├── logo-2.png
├── logo-alternative.png
├── favicon.ico
├── apple-touch-icon.png
├── favicon.svg
├── web-app-manifest-192x192.png
└── web-app-manifest-512x512.png
```

### 2. Flujo Recomendado
1. **Crear proyecto** sin assets (más rápido)
2. **Copiar assets** a `public/cd-project/assets/`
3. **Ejecutar script helper** para actualizar
4. **Commit** cambios

### 3. Nombres de Archivos
- Deben coincidir exactamente (case-sensitive)
- Sin espacios ni caracteres especiales
- Extensiones correctas (.png, .ico, .svg)

---

## 📊 Comparación de Flujos

| Método | Cuándo Usar | Ventajas |
|--------|-------------|----------|
| **Assets en JSON** | Assets listos antes | Todo en un solo paso |
| **Script Helper** | Assets después | Más flexible, paso a paso |
| **Auto-detección** | Assets en carpeta por defecto | Automático, sin configuración |

---

## 🚀 Comandos Rápidos

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

### Actualizar Assets Después
```bash
cd /Applications/XAMPP/xamppfiles/htdocs/nombre-proyecto
./scripts/update-project-assets.sh
```

### Verificar Assets
```bash
ls -la public/cd-project/img/logos/
ls -la public/cd-project/img/favicon/
```

---

## 📚 Referencias

- [Proceso Optimizado Completo](./proceso-optimizado-completo.md)
- [Proceso de Actualizar Assets](./proceso-actualizar-assets.md)
- [Guía Rápida: Actualizar Assets](./guia-rapida-actualizar-assets.md)

---

**Última actualización**: Flujo optimizado con auto-detección y script helper

