# Despliegue al VPS — Gardenia Bloom Brand Book

Guía paso a paso para subir el brand book a tu VPS y servirlo bajo tu dominio. Pensada para que **Claude Code** (o tú mismo) la siga sin fricciones.

---

## Pre-requisitos

- Un VPS Linux (Ubuntu 22.04 / Debian 12 recomendado)
- Acceso SSH (`ssh usuario@tu-vps`)
- Un dominio apuntando al VPS (registros A/AAAA en tu DNS)
- nginx instalado (`sudo apt install nginx`)
- certbot para SSL (`sudo apt install certbot python3-certbot-nginx`)

---

## Paso 1 — Estructura del paquete

Asegúrate de que el directorio local tenga esta forma:

```
gardenia-bloom/
├── brand-book.html
├── BRAND.md
├── AI_GUIDELINES.md
├── README.md
├── DEPLOY.md
├── tokens.css
├── tokens.json
└── assets/
    ├── logo-gardenia-bloom.png
    ├── logo-gardenia-bloom-transparent.png
    └── logo-gardenia-bloom-light.png
```

> **Nota:** renombra `brand-book.html` a `index.html` antes de subir si quieres que sea la página por defecto del dominio.

```bash
cp brand-book.html index.html
```

---

## Paso 2 — Subir archivos al VPS

### Opción A — `rsync` (recomendado)

```bash
rsync -avz --exclude '.DS_Store' ./ usuario@tu-vps:/var/www/gardeniabloom.com/
```

### Opción B — `scp`

```bash
ssh usuario@tu-vps "sudo mkdir -p /var/www/gardeniabloom.com && sudo chown -R $USER:$USER /var/www/gardeniabloom.com"
scp -r ./ usuario@tu-vps:/var/www/gardeniabloom.com/
```

### Opción C — `git` (si lo tienes en un repo)

```bash
ssh usuario@tu-vps
cd /var/www
sudo git clone https://github.com/tu-usuario/gardenia-bloom.git gardeniabloom.com
sudo chown -R www-data:www-data gardeniabloom.com
```

---

## Paso 3 — Configurar nginx

Crea el archivo `/etc/nginx/sites-available/gardeniabloom`:

```nginx
server {
    listen 80;
    listen [::]:80;
    server_name gardeniabloom.com www.gardeniabloom.com;

    root /var/www/gardeniabloom.com;
    index index.html brand-book.html;

    # Compresión
    gzip on;
    gzip_types text/css text/javascript application/javascript application/json image/svg+xml;
    gzip_min_length 256;

    # Cache largo para assets
    location /assets/ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # Cache corto para HTML
    location ~* \.html$ {
        expires 1h;
        add_header Cache-Control "public, must-revalidate";
    }

    # Servir markdown como texto plano descargable
    location ~* \.(md|json|css)$ {
        add_header Content-Type "text/plain; charset=utf-8";
        add_header Cache-Control "public, max-age=3600";
    }

    # 404 elegante
    error_page 404 /404.html;

    # Seguridad básica
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header Referrer-Policy "strict-origin-when-cross-origin";

    location / {
        try_files $uri $uri/ $uri.html =404;
    }
}
```

Activa la configuración:

```bash
sudo ln -s /etc/nginx/sites-available/gardeniabloom /etc/nginx/sites-enabled/
sudo nginx -t                  # valida sintaxis
sudo systemctl reload nginx    # aplica cambios
```

---

## Paso 4 — SSL con Let's Encrypt

```bash
sudo certbot --nginx -d gardeniabloom.com -d www.gardeniabloom.com
```

Sigue las instrucciones interactivas. Certbot modifica tu nginx config automáticamente para forzar HTTPS.

**Renovación automática:** ya viene configurada vía `systemd timer`. Verifica con:

```bash
sudo systemctl status certbot.timer
```

---

## Paso 5 — Verificar

Abre en navegador:
- https://gardeniabloom.com → debe mostrar el brand book
- https://gardeniabloom.com/BRAND.md → debe mostrar/descargar el markdown
- https://gardeniabloom.com/assets/logo-gardenia-bloom-transparent.png → debe servir el logo

---

## Despliegues futuros (workflow rápido)

Una vez configurado, actualizar el sitio es un comando:

```bash
# desde tu máquina local
rsync -avz --delete --exclude '.git' ./ usuario@tu-vps:/var/www/gardeniabloom.com/
```

O si usas git:

```bash
ssh usuario@tu-vps "cd /var/www/gardeniabloom.com && sudo git pull"
```

---

## Comandos para Claude Code

Si estás trabajando con Claude Code, estos son los comandos que puede ejecutar de forma autónoma:

```bash
# Verificar conexión al VPS
ssh usuario@tu-vps "echo 'connected' && uname -a"

# Crear directorio si no existe
ssh usuario@tu-vps "sudo mkdir -p /var/www/gardeniabloom.com && sudo chown -R \$USER:\$USER /var/www/gardeniabloom.com"

# Subir todo el paquete
rsync -avz --exclude '.DS_Store' --exclude '.git' ./ usuario@tu-vps:/var/www/gardeniabloom.com/

# Renombrar brand-book.html a index.html en el servidor
ssh usuario@tu-vps "cd /var/www/gardeniabloom.com && cp brand-book.html index.html"

# Recargar nginx
ssh usuario@tu-vps "sudo nginx -t && sudo systemctl reload nginx"

# Ver logs si algo falla
ssh usuario@tu-vps "sudo tail -f /var/log/nginx/error.log"
```

---

## Troubleshooting

| Problema | Solución |
|---|---|
| 403 Forbidden | `sudo chown -R www-data:www-data /var/www/gardeniabloom.com` |
| 502 Bad Gateway | `sudo systemctl restart nginx` |
| SSL no funciona | `sudo certbot renew --force-renewal` |
| Cambios no se ven | Limpia cache del navegador (Ctrl+Shift+R) |
| Fuentes no cargan | Revisa CSP headers, permite `fonts.googleapis.com` y `fonts.gstatic.com` |

---

**Listo.** El brand book de Gardenia Bloom está vivo en tu dominio.
