# Despliegue en servidor

## Contenido recomendado del ZIP

El ZIP de codigo debe incluir el proyecto fuente y excluir:

- `.git/`
- `node_modules/`
- `vendor/`
- `storage/logs/`
- `storage/framework/`
- `.env`
- dumps `.sql`
- backups `.zip`

El script `./scripts/create_backup_bundle.sh` ya genera este ZIP limpio.

## Pasos generales

1. Subir `codigo-repositorio-...zip` al servidor y descomprimirlo.
2. Crear o copiar el archivo `.env` del entorno real.
3. Instalar dependencias PHP con `composer install --no-dev --optimize-autoloader`.
4. Instalar dependencias front solo si hace falta reconstruir assets.
5. Restaurar la base de datos usando el dump correspondiente si aplica.
6. Ejecutar:

```bash
php artisan migrate --force
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

## Nota sobre APP_KEY

- No ejecutes `php artisan key:generate --force` en un sistema ya operativo.
- Solo genera una nueva `APP_KEY` si es una instalación completamente nueva.
- Si reemplazas una instalación existente, conserva la `APP_KEY` actual del `.env`.

## Cambios de esta versión

Esta versión agrega:

- API `v1` para integraciones externas
- tokens API personales por usuario
- gestión visual de tokens en `Owner > Configuración`
- soporte de `external_reference` en serenatas para integraciones idempotentes

Migraciones nuevas que deben quedar aplicadas:

- `2026_05_29_130000_create_api_tokens_table`
- `2026_05_29_130100_add_external_reference_to_serenatas_table`

## Verificaciones

- La aplicacion responde sin error 500.
- El login funciona.
- Serenatas, pagos y panel owner cargan correctamente.
- Los permisos y menus del admin siguen visibles.
- En `Owner > Configuración` se puede generar o revocar token.
- `GET /api/v1/me` responde correctamente usando un token activo.
