# Plan de Migración — YOGA (yogashala.sampenilla.com)

> Sistema de gestión de estudio de yoga: reservas de clases, membresías, eventos.
> Actualizado: 2026-07-03. Ver `/var/www/html/ipc/MIGRACION.md` para el entorno
> compartido (php.ini, permisos, usuario MySQL bonsai).

## 1. ⚠️ LO MÁS IMPORTANTE: hay una APP MÓVIL publicada

En los logs hay tráfico con user-agent `Dart/3.10` (app Flutter en producción)
y clientes iPhone/Android consumiendo `https://yogashala.sampenilla.com/api/v1/...`
(reservas, membresías, eventos).

**Implicación**: el dominio `yogashala.sampenilla.com` DEBE seguir funcionando
con HTTPS válido tras la migración, o la app móvil de los socios deja de funcionar.
La migración del dominio + SSL no es opcional ni puede esperar.

- ⚠️ USO ACTIVO confirmado: ~4,200 requests reales en 2 días (reservas diarias)
- El admin también se usa vía IP (`http://13.59.219.129/yoga/admin/`)

## 2. Componentes y tamaño

- Total: **415 MB** (rsync directo, no necesita S3)
- `admin/` (panel del estudio), `api/` (Slim + DbHandler), `web/` (app web custom,
  NO WordPress), `images/`, `politicas_de_privacidad.html` (¡enlazada desde la
  app en los stores — mantener la URL!)
- Basura a no migrar: `api/include/DbHandler (25.6.2022...).php` y
  `DbHandler (16.7.2022...).php` (copias viejas)

## 3. Base de datos

- `yoga` (~14 MB), usuario `bonsai`, `DB_HOST` = IP pública → cambiar a localhost

## 4. IP hardcodeada a reemplazar

| Archivo | Refs |
|---|---|
| `api/include/DbHandler.php` | 7 |
| `api/include/Config.php` | 1 (DB_HOST) |
| (las copias viejas de DbHandler tienen más — no migrarlas) | — |

```bash
grep -rn "13\.59\.219\.129" /var/www/html/yoga --include="*.php" --include="*.js" | grep -v vendor/
```

## 5. Apache / SSL / DNS / Cron

- VirtualHost: `yogashala.sampenilla.com` (+ www) → DocumentRoot `/var/www/html/yoga`
  con SSL Let's Encrypt en `/etc/letsencrypt/live/yogashala.sampenilla.com/`
- DNS: subdominio de `sampenilla.com` apuntando a `13.59.219.129`.
  ✅ Con la estrategia de Elastic IP (ver `/var/www/html/ipc/MIGRACION.md`) el
  DNS NO se toca el día D — la EIP se mueve al server nuevo y el dominio (y la
  app móvil) siguen funcionando. Cambiar el DNS a la IP nueva queda como tarea
  posterior sin apuro (y recién ahí se libera la EIP vieja)
- **Cron en el crontab de ROOT** (no de ubuntu — fácil de olvidar):
  ```cron
  0 8 1 * * curl -s "https://yogashala.sampenilla.com/api/v1/birthdays/monthly/" >> /var/log/birthdays_cron.log 2>&1
  ```
- Email: Gmail SMTP (`juan.sanchez@bonsai.com.ec`) hardcodeado en el API

## 6. Checklist

- [ ] `mysqldump yoga` → importar
- [ ] `rsync /var/www/html/yoga/` (excluir copias viejas de DbHandler)
- [ ] Cambiar `DB_HOST` en `api/include/Config.php`
- [ ] Reemplazar refs a IP vieja (sección 4)
- [ ] Permisos www-data donde el API escribe (`api/uploader/`, `web/app/img/`)
- [ ] VirtualHost + DNS de yogashala.sampenilla.com → IP nueva
- [ ] certbot para el SSL (crítico por la app móvil)
- [ ] Instalar el cron de cumpleaños en root (o ubuntu con ruta absoluta)
- [ ] Verificar: reservar una clase DESDE LA APP MÓVIL, login admin,
      `politicas_de_privacidad.html` responde, email de prueba
