# 🚀 Guía Completa: Crear Proyecto con Identidad Personalizada

## 📋 Resumen

Esta guía describe el proceso optimizado para crear un proyecto completo desde cero, incluyendo:
1. Creación del repositorio y clonado de CD-System
2. Configuración del proyecto (composer, .env, migraciones)
3. Personalización de identidad (config/site.php, assets)

---

## 🎯 Método Recomendado: Script Completo Automatizado

### Ejecutar el Script Maestro

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

### El Script Te Pedirá:

#### FASE 1: Información del Proyecto
- **Nombre del proyecto** (ej: `pedroweb`, `cokecolombres`)
- **URL del repositorio** (default: `https://github.com/LACOMPANIADIGITAL/{nombre}.git`)
- **Nombre de la base de datos** (default: `bewpro-{nombre}`)
- **¿Estás en cPanel?** (s/n)
- Si es cPanel:
  - Usuario de BD
  - Contraseña de BD
  - Google Analytics ID

#### FASE 2: Identidad del Proyecto
- **Nombre del sitio** (ej: "Mi Empresa")
- **URL del sitio** (ej: `www.miempresa.com`)
- **Email de contacto**
- **Descripción SEO**
- **¿Tienes assets listos?** (s/n)
- Si tienes assets:
  - Ruta a la carpeta con assets

---

## 📝 Proceso Detallado

### Paso 1: Creación del Proyecto

El script ejecuta automáticamente:
- ✅ Crea directorio del proyecto
- ✅ Inicializa repositorio Git
- ✅ Configura remote origin
- ✅ Clona rama `cd-system` desde el repositorio central
- ✅ Configura `.gitattributes` con protecciones
- ✅ Verifica archivos críticos

### Paso 2: Configuración del Proyecto

El script ejecuta automáticamente:
- ✅ Instala dependencias con `composer install`
- ✅ Crea `.env` desde `.env.example`
- ✅ Configura variables de entorno:
  - `APP_NAME`
  - `DB_DATABASE`
  - `DB_USERNAME` / `DB_PASSWORD` (si es cPanel)
  - `GOOGLE_ANALYTICS_ID` (si es cPanel)
- ✅ Genera `APP_KEY`
- ✅ Ejecuta `migrate:fresh --seed`
- ✅ Crea symlink de storage

### Paso 3: Personalización de Identidad

El script ejecuta automáticamente:

#### 3.1. Actualización de `config/site.php`

Usa el comando artisan `project:customize-identity`:

```bash
php artisan project:customize-identity \
    --name="Nombre del Sitio" \
    --url="www.miempresa.com" \
    --email="contacto@miempresa.com" \
    --description="Descripción SEO" \
    --author="Nombre del Autor"
```

**Campos actualizados:**
- `name` - Nombre del sitio
- `url` - URL del sitio
- `author` - Autor del proyecto
- `seo.description` - Descripción SEO
- `contact.email` - Email de contacto
- `og.title` - Título para Open Graph

#### 3.2. Actualización de Assets

Si proporcionaste una carpeta con assets, ejecuta:

```bash
php artisan project:update-assets public/cd-project/assets --backup --project="nombre-proyecto"
```

**Assets procesados:**
- **Logos** → `public/cd-project/img/logos/`
  - `logo.png`
  - `logo-2.png`
  - `logo-alternative.png`
- **Favicons** → `public/cd-project/img/favicon/`
  - `favicon.ico`
  - `apple-touch-icon.png`
  - `favicon.svg`
  - `web-app-manifest-192x192.png`
  - `web-app-manifest-512x512.png`
- **Skins CSS** → `public/template/css/skins/`
  - `skin-*.css` (si existen)

---

## 🔧 Comandos Artisan Disponibles

### Personalizar Identidad

```bash
php artisan project:customize-identity \
    --name="Mi Empresa" \
    --url="www.miempresa.com" \
    --email="contacto@miempresa.com" \
    --description="Descripción SEO del sitio" \
    --author="Mi Empresa"
```

### Actualizar Assets

```bash
php artisan project:update-assets public/cd-project/assets --backup --project="nombre-proyecto"
```

**Opciones:**
- `--backup` - Crea backup de assets actuales
- `--project=PROJECT` - Nombre del proyecto (informativo)

---

## ✅ Estado Final Esperado

Después de ejecutar el script completo, tendrás:

- [x] Repositorio creado en GitHub
- [x] Rama `cd-system` clonada localmente
- [x] `.gitattributes` con protecciones configuradas
- [x] Dependencias instaladas
- [x] `.env` configurado
- [x] `APP_KEY` generado
- [x] Base de datos migrada y seedeada
- [x] `config/site.php` personalizado
- [x] Assets actualizados (si se proporcionaron)
- [x] Proyecto listo para desarrollo

---

## 🚀 Próximos Pasos

### 1. Push Inicial (Opcional)

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/nombre-proyecto
git push -u origin cd-system
```

### 2. Iniciar Servidor

```bash
php artisan serve
```

Acceder a: `http://127.0.0.1:8000`

### 3. Credenciales de Acceso

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

### 4. Personalización Adicional

Si no proporcionaste assets durante la creación:

```bash
# Colocar assets en public/cd-project/assets/
# Luego ejecutar:
php artisan project:update-assets public/cd-project/assets --backup
```

Para personalizar más campos de `config/site.php`:

```bash
# Editar manualmente
nano config/site.php

# O usar el comando artisan
php artisan project:customize-identity --name="Nuevo Nombre"
```

---

## 📚 Referencias

- [Guía: Crear Nuevo Proyecto](./new-project.md)
- [Protección de Archivos del Sistema](../cd-system/proteccion-archivos-sistema.md)
- [Proceso de Actualización de Assets](../cd-project/asset-update-process.md)

---

## 🆘 Solución de Problemas

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

```bash
# Instalar composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
```

### Error: "Extensiones PHP faltantes"

```bash
# Verificar extensiones
php -m | grep -E "(fileinfo|pdo|mbstring|xml|curl|zip|gd)"

# En macOS con Homebrew
brew install php
```

### Error: "No se puede actualizar config/site.php"

Verificar que el comando esté registrado:

```bash
php artisan list | grep customize-identity
```

Si no aparece, verificar `app/Console/Kernel.php`:

```php
protected $commands = [
    Commands\UpdateProjectAssets::class,
    Commands\CustomizeProjectIdentity::class,
];
```

### Assets no se actualizan

Verificar que los archivos estén en la carpeta correcta:

```bash
ls -la public/cd-project/assets/
# Debe mostrar: logo.png, logo-2.png, favicon.ico, etc.
```

Verificar permisos:

```bash
chmod -R 755 public/cd-project/assets/
```

---

**Última actualización**: Proceso completo optimizado con personalización de identidad integrada

