# Deploy del monolito MercadoDeVida

## ¿Basta con copiar `project/`?

Sí, para levantar el monolito en un host basta con traer la carpeta `project/` completa y ejecutar:

```bash
cd project
./scripts/monolith.sh prod start
```

o, para reemplazar una versión anterior ya corriendo:

```bash
cd project
./scripts/monolith.sh prod restart
```

## Qué hace `monolith.sh prod start/restart`

1. Limpia procesos antiguos del proyecto y listeners en puertos gestionados.
2. Arranca PostgreSQL y Redis con Docker Compose.
3. Instala dependencias con `npm ci` en backend, admin, TPV, frontend y storefront.
4. Ejecuta migraciones.
5. Compila backend y frontends.
6. Arranca servicios con `nohup` y guarda PID/logs en `project/.runtime/prod/`.
7. Verifica HTTP para cada servicio.

Servicios por defecto:

| Servicio | Puerto |
|---|---:|
| Backend API | 3000 |
| Admin | 3001 |
| TPV | 3002 |
| Frontend | 3003 |
| Storefront SEO | 3004 |

## Requisitos del host

- Node.js >= 22
- npm
- Docker + Docker Compose
- Bash, curl, lsof
- Variables/secretos en `project/.env`

Si no existe `.env`, el script crea uno de desarrollo. En producción real conviene crear `.env` explícito antes de arrancar.

## Lo que NO gestiona

- Traefik/Nginx/Authelia o certificados TLS.
- Arranque automático tras reinicio del host.
- Backups de base de datos.

Para producción estable conviene envolver `./scripts/monolith.sh prod restart` con systemd, supervisor o el orquestador elegido.
