# 🚀 Guía Paso a Paso: Crear Proyecto Optimizado

## 📋 Resumen

Guía completa y optimizada para crear un nuevo proyecto desde cero, siguiendo las mejores prácticas de desarrollo.

**Tiempo estimado**: 10-15 minutos (dependiendo de assets)

---

## 🎯 Proceso en 5 Pasos

### ✅ Paso 1: Preparar Assets (Opcional pero Recomendado)

#### 1.1. Crear Carpeta para Assets

```bash
# Crear carpeta en tu home (recomendado)
mkdir -p ~/assets-proyectos/nombre-del-proyecto

# O si prefieres en el escritorio:
mkdir -p ~/Desktop/assets-nombre-proyecto
```

#### 1.2. Copiar Assets a la Carpeta

```bash
# Copiar tus assets allí
cp /ruta/a/tus/assets/* ~/assets-proyectos/nombre-del-proyecto/

# O si ya los tienes en algún lugar, muévelos:
mv /ruta/a/tus/assets/* ~/assets-proyectos/nombre-del-proyecto/
```

#### 1.3. Verificar Assets Requeridos

```bash
# Ver qué archivos tienes
ls -la ~/assets-proyectos/nombre-del-proyecto/

# Debes tener al menos estos 8 archivos:
# ✅ 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
```

#### 1.4. Obtener Ruta Absoluta

```bash
# Navegar a la carpeta
cd ~/assets-proyectos/nombre-del-proyecto

# Obtener ruta absoluta
pwd

# Copiar esta ruta, la necesitarás para el JSON
# Ejemplo: /Users/tu-usuario/assets-proyectos/nombre-del-proyecto
```

---

### ✅ Paso 2: Crear Repositorio en GitHub

1. Ir a [GitHub](https://github.com/LACOMPANIADIGITAL)
2. Crear nuevo repositorio
3. Nombre: `nombre-del-proyecto`
4. Visibilidad: Privado o Público
5. **Puede estar vacío** (no importa si tiene README o no)
6. Copiar URL del repositorio:
   - `https://github.com/LACOMPANIADIGITAL/nombre-del-proyecto.git`

---

### ✅ Paso 3: Crear JSON de Configuración

#### 3.1. Navegar a cd-system

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
```

#### 3.2. Copiar Plantilla

```bash
# Copiar el ejemplo
cp scripts/project-config.example.json mi-proyecto.json
```

#### 3.3. Editar JSON

Abrir `mi-proyecto.json` y completar con tus datos:

**Opción A: Con Assets Preparados (Recomendado)** ⭐

```json
{
  "project": {
    "name": "nombre-del-proyecto",
    "repository_url": "https://github.com/LACOMPANIADIGITAL/nombre-del-proyecto.git",
    "database": {
      "name": "bewpro-nombre-del-proyecto",
      "is_cpanel": false,
      "username": "",
      "password": "",
      "google_analytics_id": ""
    }
  },
  "identity": {
    "site_name": "Nombre del Sitio",
    "site_url": "www.miempresa.com",
    "contact_email": "contacto@miempresa.com",
    "seo_description": "Descripción SEO del sitio web",
    "author": "Nombre del Autor"
  },
  "assets": {
    "has_assets": true,
    "assets_path": "/Users/tu-usuario/assets-proyectos/nombre-del-proyecto",
    "update_assets": true,
    "create_backup": true,
    "auto_detect": false
  },
  "options": {
    "skip_push": false,
    "skip_verification": false,
    "verbose": true
  }
}
```

> 💡 **Tip**: Copia la plantilla desde `scripts/project-config.example.json` y edita solo los valores necesarios.

**Opción B: Sin Assets (Actualizar Después)**

```json
{
  "project": {
    "name": "nombre-del-proyecto",
    "repository_url": "https://github.com/LACOMPANIADIGITAL/nombre-del-proyecto.git"
  },
  "identity": {
    "site_name": "Nombre del Sitio",
    "site_url": "www.miempresa.com",
    "contact_email": "contacto@miempresa.com"
  },
  "assets": {
    "has_assets": false,
    "auto_detect": false
  }
}
```

**Importante:**
- Reemplaza `/Users/tu-usuario/assets-proyectos/nombre-del-proyecto` con la ruta absoluta que obtuviste en el Paso 1.4
- Usa **ruta absoluta** (completa), no relativa

#### 3.4. Validar JSON

```bash
# Verificar que el JSON es válido
jq . mi-proyecto.json

# Si no tienes jq instalado:
# macOS: brew install jq
# Linux: sudo apt-get install jq
```

---

### ✅ Paso 4: Ejecutar Script de Creación

#### 4.1. Verificar Setup (Opcional pero Recomendado)

```bash
# Verificar que todo esté listo
./scripts/verify-setup.sh
```

#### 4.2. Ejecutar Script

```bash
# Asegúrate de estar en cd-system
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system

# Ejecutar el script
./scripts/create-complete-project.sh mi-proyecto.json
```

**El script automáticamente:**
1. ✅ Crea directorio del proyecto
2. ✅ Inicializa repositorio Git
3. ✅ Configura remote origin
4. ✅ Clona rama `cd-system` (usa directorio local si existe, más rápido)
5. ✅ Configura `.gitattributes` con protecciones
6. ✅ Instala dependencias (composer)
7. ✅ Configura `.env`
8. ✅ Genera `APP_KEY`
9. ✅ Ejecuta migraciones y seeders
10. ✅ Personaliza `config/site.php`
11. ✅ **Copia assets desde ruta externa** (si `has_assets: true`)
12. ✅ **Actualiza assets en ubicaciones finales**
13. ✅ Crea backup automático
14. ✅ Verifica estado final

**Tiempo estimado**: 5-10 minutos (dependiendo de conexión y assets)

---

### ✅ Paso 5: Verificar y Próximos Pasos

#### 5.1. Verificar que el Proyecto se Creó

```bash
# Navegar al proyecto
cd /Applications/XAMPP/xamppfiles/htdocs/nombre-del-proyecto

# Verificar estructura
ls -la
```

#### 5.2. Verificar Identidad Personalizada

```bash
# Verificar config/site.php
grep -A 2 "'name' =>" config/site.php
# Debe mostrar: 'name' => 'Nombre del Sitio'

# Verificar email
grep "'email' =>" config/site.php
# Debe mostrar: 'email' => 'contacto@miempresa.com'
```

#### 5.3. Verificar Assets (si se actualizaron)

```bash
# Verificar logos
ls -la public/cd-project/img/logos/
# Debe mostrar: logo.png, logo-2.png, logo-alternative.png

# Verificar favicons
ls -la public/cd-project/img/favicon/
# Debe mostrar: favicon.ico, apple-touch-icon.png, etc.

# Verificar backup (si se creó)
ls -la storage/app/backups/assets/
```

#### 5.4. Actualizar Assets (si no se hicieron antes)

Si no incluiste assets en el JSON o quieres actualizarlos:

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

# Opción B: Comando directo
php artisan project:update-assets /ruta/a/tus/assets --backup --project="nombre-proyecto"

# Opción C: Si ya están en public/cd-project/assets/
php artisan project:update-assets public/cd-project/assets --backup --project="nombre-proyecto"
```

#### 5.5. Commit Inicial (Recomendado)

```bash
# Ver cambios
git status

# Agregar todo
git add .

# Commit inicial
git commit -m "feat: Proyecto inicial nombre-del-proyecto

- Sistema clonado desde CD-System
- Configuración completa
- Identidad personalizada
- Assets actualizados"

# Push (opcional)
git push -u origin cd-system
```

#### 5.6. Iniciar Servidor de Desarrollo

```bash
# Iniciar servidor
php artisan serve

# Abrir en navegador
# http://127.0.0.1:8000
```

#### 5.7. Credenciales de Acceso

- **Email**: `admin@nombre-del-proyecto.com`
- **Password**: `password`

---

## 📋 Checklist Final

Después de completar todos los pasos, verifica:

- [ ] Repositorio creado en GitHub
- [ ] JSON de configuración creado y validado
- [ ] Script ejecutado exitosamente
- [ ] Rama `cd-system` activa
- [ ] `.gitattributes` con protecciones configuradas
- [ ] Dependencias instaladas
- [ ] `.env` configurado
- [ ] `APP_KEY` generado
- [ ] Migraciones ejecutadas
- [ ] `config/site.php` personalizado
- [ ] Assets actualizados (si se proporcionaron)
- [ ] Backup de assets creado (si aplica)
- [ ] Servidor puede iniciar (`php artisan serve`)
- [ ] Commit inicial realizado (opcional)
- [ ] Push a GitHub realizado (opcional)

---

## 🎯 Ejemplo Completo: cokecolombres

### 1. Preparar Assets

```bash
mkdir -p ~/assets-proyectos/cokecolombres
cp /ruta/a/tus/assets/* ~/assets-proyectos/cokecolombres/
cd ~/assets-proyectos/cokecolombres && pwd
# Copiar esta ruta: /Users/cokecolombres/assets-proyectos/cokecolombres
```

### 2. 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",
    "seo_description": "Descripción SEO del sitio web de Cokecolombres",
    "author": "Cokecolombres"
  },
  "assets": {
    "has_assets": true,
    "assets_path": "/Users/cokecolombres/assets-proyectos/cokecolombres",
    "update_assets": true,
    "create_backup": true,
    "auto_detect": false
  }
}
```

### 3. Ejecutar

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

### 4. Verificar

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cokecolombres
ls -la public/cd-project/img/logos/
ls -la public/cd-project/img/favicon/
```

---

## 🆘 Solución de Problemas

### Error: "No se encontró el directorio de assets"

**Causa**: La ruta en el JSON es incorrecta o no existe.

**Solución**:
```bash
# Verificar que la ruta existe
ls -la /ruta/especificada/en/json

# Obtener ruta absoluta correcta
cd ~/assets-proyectos/nombre-proyecto
pwd
# Copiar esta ruta al JSON
```

### Error: "Assets no se actualizaron"

**Causa**: `has_assets: false` en JSON o ruta incorrecta.

**Solución**:
```bash
# Verificar JSON
cat mi-proyecto.json | grep has_assets

# Actualizar manualmente después
cd /Applications/XAMPP/xamppfiles/htdocs/nombre-proyecto
./scripts/update-project-assets.sh /ruta/a/assets
```

### Error: "Script no tiene permisos"

**Solución**:
```bash
chmod +x scripts/create-complete-project.sh
chmod +x scripts/update-project-assets.sh
```

### Error: "JSON no válido"

**Solución**:
```bash
# Validar JSON
jq . mi-proyecto.json

# Verificar sintaxis
# - Comas correctas
# - Comillas dobles
# - Llaves y corchetes balanceados
```

---

## 📚 Referencias

- [README](./README.md) - Índice de documentación
- [Proceso Optimizado Completo](./proceso-optimizado-completo.md) - Detalles técnicos
- [Proceso Optimizado: Assets](./proceso-optimizado-assets.md) - Guía completa de assets
- [Checklist: Crear Proyecto](./checklist-crear-proyecto.md) - Checklist de verificación

---

**Última actualización**: Guía optimizada y consolidada

