# 🔄 Flujo Completo de Creación de Proyecto

**Versión:** 1.0  
**Fecha:** Noviembre 2024  
**Objetivo:** Documentar el flujo completo desde 0 hasta proyecto funcional

---

## 🎯 Resumen Ejecutivo

El proceso completo consta de **2 flujos principales** que pueden ejecutarse de forma independiente o combinada:

### Opción A: VPS Primero (Recomendado para producción)
1. **VPS:** Crear cuenta cPanel, BD, clonar repo
2. **Local:** Clonar desde cd-system, configurar, personalizar
3. **VPS:** Subir cambios, verificar

### Opción B: Local Primero (Recomendado para desarrollo)
1. **Local:** Clonar desde cd-system, configurar, personalizar
2. **VPS:** Crear cuenta cPanel, BD, clonar repo
3. **VPS:** Sincronizar cambios, verificar

---

## 📍 FASE 1: VPS - Creación de Infraestructura

### Script: `bulk_create_cpanel3.sh --interactive`

**Ubicación:** `/root/scripts/bulk_create_cpanel3.sh`  
**Servidor:** `72.61.45.136`

#### Paso 1.1: Conectarse al VPS
```bash
ssh root@72.61.45.136
cd /root/scripts
```

#### Paso 1.2: Ejecutar Script
```bash
./bulk_create_cpanel3.sh --interactive
```

#### Paso 1.3: Responder Preguntas

**Datos básicos:**
- Dominio: `ejemplo.com`
- Usuario: `ejemplo` (máx 8 caracteres)
- Contraseña: [Enter] (genera automáticamente)
- Plan: [Enter] (default)
- Email: [Enter] (admin@example.com)
- Cuota: [Enter] (0 = ilimitado)

**Base de datos (opcional):**
```
¿Querés crear la base de datos MySQL para ejemplo? (s/n): s
```
**Resultado:**
- Base de datos: `ejemplo_db`
- Usuario: `ejemplo_usr`
- Contraseña: Generada automáticamente
- Credenciales guardadas en `/root/credenciales`

**Repositorio (opcional):**
```
¿Querés clonar un repositorio en public_html? (s/n): s
🔗 Ingresá el link del repositorio: https://github.com/LACOMPANIADIGITAL/ejemplo.git
🔍 Ingresá el nombre de la rama: cd-system
⚙️  ¿Querés correr el script de setup? (s/n): s
```
**Resultado:**
- Repositorio clonado en `/home/ejemplo/public_html/ejemplo`
- Composer instalado (si no existe)
- Script `setup_cd_project.sh` ejecutado

#### Paso 1.4: Obtener Credenciales
```bash
cat /root/credenciales
```

**Salida esperada:**
```
Cuenta cPanel: ejemplo
Contraseña: xK9mP2nQ7rT4vW
Base de datos: ejemplo_db
Usuario DB: ejemplo_usr
Contraseña DB: yZ8nQ3mR6sT9uV
```

---

## 📍 FASE 2: Local - Clonado del Core

### Script: `create-new-project.sh`

**Ubicación:** `/Applications/XAMPP/xamppfiles/htdocs/cd-system/scripts/`

#### Paso 2.1: Ejecutar Script
```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
./scripts/create-new-project.sh
```

#### Paso 2.2: Responder Preguntas
- Nombre del proyecto: `ejemplo`
- URL del repositorio: `https://github.com/LACOMPANIADIGITAL/ejemplo.git`
- Confirmar: `y`

#### Paso 2.3: Resultado
- Directorio creado: `/Applications/XAMPP/xamppfiles/htdocs/ejemplo`
- Repositorio Git inicializado
- Rama `cd-system` clonada desde cd-system
- `.gitattributes` configurado con protecciones

---

## 📍 FASE 3: Local - Configuración del Proyecto

### Script: `setup_cd_project.sh`

**Ubicación:** `{PROJECT_DIR}/scripts/setup_cd_project.sh`

#### Paso 3.1: Ejecutar Script
```bash
cd /Applications/XAMPP/xamppfiles/htdocs/ejemplo
chmod +x scripts/setup_cd_project.sh
./scripts/setup_cd_project.sh
```

#### Paso 3.2: Responder Preguntas

**Datos del proyecto:**
- Nombre del proyecto: `ejemplo`
- Nombre de la base de datos: `ejemplo_db` (o `bewpro-ejemplo` para local)
- ¿Estás en cPanel? `n` (para local) o `s` (si ya está en VPS)

**Si es cPanel:**
- Usuario de BD: `ejemplo_usr`
- Contraseña de BD: (la generada en VPS)
- Google Analytics ID: `G-XXXXXXXXXX` (opcional)

#### Paso 3.3: Resultado
- Dependencias instaladas (`composer install`)
- Archivo `.env` creado y configurado
- `APP_KEY` generado
- Migraciones ejecutadas (`migrate:fresh --seed`)
- Symlink de storage creado

---

## 📍 FASE 4: Local - Personalización

### Script: `create-complete-project.sh` (opcional)

**Ubicación:** `/Applications/XAMPP/xamppfiles/htdocs/cd-system/scripts/`

#### Paso 4.1: Personalizar Identidad

**Archivo: `config/site.php`**
```php
'name' => 'Mi Empresa',
'url' => 'https://ejemplo.com',
'email' => 'contacto@ejemplo.com',
```

**Assets:**
```bash
# Copiar logos, favicons, etc.
cp -r /ruta/a/assets/* public/cd-project/assets/
```

#### Paso 4.2: Configurar Demo

**Archivo: `config/cd-system.php`**
```php
'theme' => [
    'demo' => 'demo-accounting-1', // o el demo deseado
],
```

#### Paso 4.3: Activar Módulos

**Archivo: `config/cd-system.php`**
```php
'modules' => [
    'blog' => ['active' => true],
    'services' => ['active' => true],
    // ...
],
```

---

## 📍 FASE 5: VPS - Sincronización

### Opción A: Si el repo ya está clonado en VPS

Si en la FASE 1 se clonó el repositorio, solo necesitas:

```bash
# Desde local, hacer push
cd /Applications/XAMPP/xamppfiles/htdocs/ejemplo
git add .
git commit -m "Initial project setup"
git push origin cd-system

# En VPS, hacer pull
ssh root@72.61.45.136
su - ejemplo
cd ~/public_html/ejemplo
git pull origin cd-system
```

### Opción B: Si el repo NO está clonado en VPS

```bash
# Desde local, hacer push
cd /Applications/XAMPP/xamppfiles/htdocs/ejemplo
git add .
git commit -m "Initial project setup"
git push origin cd-system

# En VPS, clonar
ssh root@72.61.45.136
su - ejemplo
cd ~/public_html
git clone https://github.com/LACOMPANIADIGITAL/ejemplo.git
cd ejemplo
git checkout cd-system
```

---

## 📍 FASE 6: VPS - Configuración Final

### Paso 6.1: Configurar .env en VPS

```bash
ssh root@72.61.45.136
su - ejemplo
cd ~/public_html/ejemplo
cp .env.example .env
nano .env
```

**Configurar:**
```env
APP_NAME="Mi Empresa"
APP_URL=https://ejemplo.com
DB_DATABASE=ejemplo_db
DB_USERNAME=ejemplo_usr
DB_PASSWORD=yZ8nQ3mR6sT9uV
```

### Paso 6.2: Ejecutar Setup (si no se ejecutó antes)

```bash
cd ~/public_html/ejemplo
php artisan key:generate
php artisan migrate:fresh --seed
php artisan storage:link
```

### Paso 6.3: Configurar Permisos

```bash
chmod -R 755 storage bootstrap/cache
chown -R ejemplo:ejemplo storage bootstrap/cache
```

### Paso 6.4: Verificar

- Acceder a `https://ejemplo.com`
- Verificar que el sitio carga correctamente
- Verificar que la base de datos está conectada
- Verificar que los assets cargan

---

## 🔄 Flujo Completo Visual

```
┌─────────────────────────────────────────────────────────────┐
│                    FASE 1: VPS (Infraestructura)             │
├─────────────────────────────────────────────────────────────┤
│ 1. SSH al servidor                                          │
│ 2. bulk_create_cpanel3.sh --interactive                     │
│ 3. Crear cuenta cPanel                                      │
│ 4. Crear base de datos (opcional)                           │
│ 5. Clonar repositorio (opcional)                            │
│ 6. Ejecutar setup (opcional)                                 │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│              FASE 2: Local (Clonado del Core)               │
├─────────────────────────────────────────────────────────────┤
│ 1. create-new-project.sh                                   │
│ 2. Crear directorio                                         │
│ 3. Inicializar Git                                          │
│ 4. Clonar desde cd-system                                   │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│          FASE 3: Local (Configuración del Proyecto)          │
├─────────────────────────────────────────────────────────────┤
│ 1. setup_cd_project.sh                                     │
│ 2. Instalar dependencias                                    │
│ 3. Configurar .env                                          │
│ 4. Ejecutar migraciones                                     │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│            FASE 4: Local (Personalización)                  │
├─────────────────────────────────────────────────────────────┤
│ 1. Configurar config/site.php                              │
│ 2. Copiar assets                                            │
│ 3. Seleccionar demo                                         │
│ 4. Activar módulos                                          │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│            FASE 5: VPS (Sincronización)                     │
├─────────────────────────────────────────────────────────────┤
│ 1. Push desde local                                         │
│ 2. Pull en VPS (o clonar si no existe)                      │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│          FASE 6: VPS (Configuración Final)                   │
├─────────────────────────────────────────────────────────────┤
│ 1. Configurar .env                                          │
│ 2. Ejecutar migraciones (si no se ejecutó antes)            │
│ 3. Configurar permisos                                      │
│ 4. Verificar funcionamiento                                 │
└─────────────────────────────────────────────────────────────┘
```

---

## 📊 Checklist Completo

### VPS
- [ ] Cuenta cPanel creada
- [ ] Base de datos MySQL creada
- [ ] Usuario de BD creado
- [ ] Credenciales guardadas
- [ ] Repositorio clonado (opcional)
- [ ] Composer instalado (opcional)
- [ ] Script de setup ejecutado (opcional)

### Local
- [ ] Directorio del proyecto creado
- [ ] Repositorio Git inicializado
- [ ] Rama cd-system clonada
- [ ] Dependencias instaladas
- [ ] .env configurado
- [ ] Migraciones ejecutadas
- [ ] Identidad personalizada
- [ ] Assets copiados
- [ ] Demo seleccionado
- [ ] Módulos activados

### Sincronización
- [ ] Cambios pusheados a GitHub
- [ ] Cambios sincronizados en VPS
- [ ] .env configurado en VPS
- [ ] Permisos correctos
- [ ] Sitio accesible
- [ ] Base de datos conectada
- [ ] Assets cargando

---

## 🎯 Tiempo Estimado

- **FASE 1 (VPS):** 5-10 minutos
- **FASE 2 (Local - Clonado):** 2-3 minutos
- **FASE 3 (Local - Setup):** 5-10 minutos
- **FASE 4 (Local - Personalización):** 10-30 minutos (depende de assets)
- **FASE 5 (VPS - Sincronización):** 2-5 minutos
- **FASE 6 (VPS - Final):** 5-10 minutos

**Total:** 30-70 minutos (dependiendo de personalización)

---

## 🔍 Referencias

- Análisis completo del script VPS: `docs/ANALISIS-COMPLETO-bulk_create_cpanel3.md`
- Proceso detallado: `docs/PROCESO-CREACION-PROYECTO-COMPLETO.md`
- Scripts locales: `scripts/`

---

**Última actualización:** Noviembre 2024  
**Estado:** ✅ DOCUMENTACIÓN COMPLETA

