# Ejemplo: Entrega de Proyecto — Paso a paso

> Guia practica con ejemplo real para entregar un proyecto como reseller (CD)

---

## Contexto

BewPro provee el producto (core preset + demo + seeds). CD agrega valor personalizando el branding y cargando contenido real del cliente. Este documento muestra el proceso completo con un ejemplo.

---

## Ejemplo 1: Personal Brand — "María López" (Coach Personal)

### Datos recibidos del cliente

| Dato | Valor |
|------|-------|
| Nombre | María López |
| Email admin | maria@ejemplo.com |
| Rubro | Coach personal / marca personal |
| Producto elegido | personal-brand |
| Colores de marca | Rosa #E91E63 (primary), Negro #1A1A1A (secondary) |
| Font preferida | Default del producto |
| Teléfono | +54 9 381 555 1234 |
| Instagram | @marialopezcoach |
| Tagline | "Transformá tu vida, un paso a la vez" |

### Paso 1: Generar skin CSS

```bash
php artisan bewpro:skin \
  --from-demo=accounting-2 \
  --primary=#E91E63 \
  --secondary=#1A1A1A \
  --output=skin-maria-lopez.css
```

Resultado: `public/template/css/skins/skin-maria-lopez.css` creado con la paleta completa.

### Paso 2: Provisionar

```bash
php artisan bewpro:new maria@ejemplo.com "María López" personal-brand \
  --db=bp-maria-lopez \
  --skip-assets
```

Esto crea:
- DB `bp-maria-lopez` con todas las tablas
- Demo: demo-accounting-2 (dark mode, personal)
- Modulos: gallery, blog, projects, faqs
- 10 FAQs genericas de marca personal
- 3 blog posts de ejemplo
- Navegacion dinamica configurada
- CTA: "Portfolio" → /projects
- Admin: maria@ejemplo.com + password generado

### Paso 3: Configurar skin del proyecto

```bash
# Cambiar .env para apuntar a la DB del proyecto
# DB_DATABASE=bp-maria-lopez

php artisan tinker --execute="
\App\Models\Setting::updateOrCreate(
    ['key' => 'cd-system.theme.skin'],
    ['value' => 'skin-maria-lopez']
);
\Illuminate\Support\Facades\Cache::flush();
"
```

### Paso 4: Cargar assets del cliente

```bash
# Dropear logos del cliente en la carpeta
cp ~/assets-maria/logo.png public/cd-project/assets/logo.png
cp ~/assets-maria/logo-alt.png public/cd-project/assets/logo-alternative.png
cp ~/assets-maria/favicon.ico public/cd-project/assets/favicon.ico
# ... (resto de assets)

# Subir a Cloudinary
php artisan db:seed --class=AssetsSeeder --force
```

### Paso 5: Personalizar contenido (desde /admin)

Con `.env` apuntando a `bp-maria-lopez`, entrar a `/login`:

| Seccion | Que hacer |
|---------|-----------|
| `/settings` | Editar tagline, description, contacto, redes sociales |
| `/faqs-settings` | Reemplazar FAQs de ejemplo con las reales del cliente |
| `/blog-settings` | Crear/editar posts con contenido real |
| `/gallery-settings` | Subir fotos del cliente |
| `/project-settings` | Cargar portfolio/proyectos |

### Paso 6: Checklist pre-entrega

```
[ ] Logo se ve bien en header y footer (desktop + mobile)
[ ] Favicon aparece en tab del navegador
[ ] Colores de marca correctos (skin aplicado)
[ ] Tagline y descripcion reales (no placeholder)
[ ] Datos de contacto completos y correctos
[ ] Redes sociales con links funcionales
[ ] WhatsApp abre con mensaje correcto
[ ] FAQs con contenido real del cliente
[ ] Blog con al menos 1 post real
[ ] Galeria con fotos reales
[ ] Portfolio con proyectos reales
[ ] Formulario de contacto envia correctamente
[ ] Responsive: mobile + tablet + desktop
[ ] Meta tags correctos (og-image, titulo, descripcion)
[ ] Login admin funciona con credenciales del cliente
```

### Paso 7: Entregar

Enviar al cliente:
- URL: `marialopez.bewpro.com`
- Admin: `marialopez.bewpro.com/login`
- Email: maria@ejemplo.com
- Password: (el generado en paso 2)

---

## Ejemplo 2: Restaurant — "La Trattoria" (Restaurante Italiano)

### Datos recibidos

| Dato | Valor |
|------|-------|
| Nombre | La Trattoria |
| Email admin | admin@latrattoria.com |
| Producto | restaurant-bar |
| Colores | Bordo #8B0000 (primary), Verde oliva #556B2F (secondary) |
| Teléfono | +54 9 381 444 5678 |
| Horario | Mar-Dom 12:00 - 00:00 |

### Comandos

```bash
# 1. Skin
php artisan bewpro:skin \
  --from-demo=restaurant \
  --primary=#8B0000 \
  --secondary=#556B2F \
  --output=skin-la-trattoria.css

# 2. Provision (por JSON para mas control)
cat > database/seeders/project-data/provision-la-trattoria.json << 'EOF'
{
    "name": "La Trattoria",
    "db_name": "bp-la-trattoria",
    "demo": "demo-restaurant",
    "tagline": "Auténtica cocina italiana en Tucumán",
    "description": "Pastas artesanales, pizzas a la piedra y los mejores vinos. Un rincón de Italia en el corazón de Tucumán.",
    "modules": ["menu", "gallery", "blog", "faqs"],
    "modules_navigation": {
        "menu": {"header": true, "footer": true},
        "gallery": {"header": true, "footer": true},
        "blog": {"header": true, "footer": true},
        "faqs": {"header": false, "footer": true}
    },
    "contact": {
        "phone": "+54 9 381 444 5678",
        "email": "reservas@latrattoria.com",
        "address": "San Martín 750, San Miguel de Tucumán",
        "hours": "Martes a Domingo 12:00 - 00:00"
    },
    "social_media": {
        "instagram": {"url": "https://instagram.com/latrattoria", "active": true},
        "whatsapp": {"url": "https://wa.me/5493814445678", "active": true}
    },
    "skin": "skin-la-trattoria",
    "fonts": {"primary": "Playfair Display", "secondary": "Lato", "tertiary": "Lato"},
    "schema_type": "Restaurant",
    "header": {
        "cta_button": {"active": true, "title": "Reservar", "url": "/contact", "target": "_self"}
    },
    "users": [{"name": "Admin", "email": "admin@latrattoria.com", "password": "password", "role": "admin"}]
}
EOF

php artisan bewpro:provision database/seeders/project-data/provision-la-trattoria.json --skip-assets

# 3. Assets + skin config (mismos pasos que ejemplo 1)
```

---

## Ejemplo 3: Provisión rápida con `bewpro:new` (sin JSON)

Para cuando el cliente compra directo y no hay personalización de reseller:

```bash
# Un solo comando — usa todo del core preset
php artisan bewpro:new cliente@email.com "Nombre del Negocio" insurance-advisor

# Resultado:
#   DB: bp-nombre-del-negocio (auto-generado)
#   Demo: demo-insurance
#   Modulos: services, faqs
#   Seeds: 10 FAQs de seguros + 5 servicios de seguros
#   Email: enviado con credenciales
```

El cliente recibe su sitio funcional con contenido de ejemplo relevante a seguros. Desde el admin personaliza todo.

---

## Referencia rapida: Producto → Comando

| Si el cliente es... | Comando |
|---------------------|---------|
| Marca personal / freelancer | `bewpro:new EMAIL "Nombre" personal-brand` |
| Restaurante / bar | `bewpro:new EMAIL "Nombre" restaurant-bar` |
| Estudio jurídico | `bewpro:new EMAIL "Nombre" law-firm-digital` |
| Constructora | `bewpro:new EMAIL "Nombre" construction` |
| Inmobiliaria | `bewpro:new EMAIL "Nombre" real-estate` |
| Fotógrafo | `bewpro:new EMAIL "Nombre" photography` |
| Agencia / estudio | `bewpro:new EMAIL "Nombre" agency` |
| Asesor financiero | `bewpro:new EMAIL "Nombre" financial-wealth` |
| Asesor de seguros | `bewpro:new EMAIL "Nombre" insurance-advisor` |
| ONG / fundación | `bewpro:new EMAIL "Nombre" foundations-ong` |
| E-commerce / catálogo | `bewpro:new EMAIL "Nombre" business-catalogue` |
| Nutricionista / salud | `bewpro:new EMAIL "Nombre" nutritionist` |
| Corporativo | `bewpro:new EMAIL "Nombre" corporative` |
| Sitio basico | `bewpro:new EMAIL "Nombre" petite-website` |
| Sitio estandar | `bewpro:new EMAIL "Nombre" standard-website` |

Todos los comandos aceptan `--db=bp-custom-name`, `--skip-assets`, `--no-email`.

Para branding custom (colores, fonts, datos completos): usar `bewpro:provision` con JSON.
