# Deploy do ENIAC Ventures

Site de `eniac.ventures` ligado ao repositório `FCJ-VB/eniac-ventures` e ao
projeto Lovable `eniac-ventures.lovable.app`. O build TanStack Start usa Nitro
`node-server`.

As imagens são versionadas em `public/media/eniac/` e servidas pelo próprio
site; a produção não depende das rotas internas de assets do Lovable.

- Checkout na VM: `/var/www/html/eniacventures/eniac-ventures`, dono `deploy`.
- Serviço: `eniacventures.service`, Node em `127.0.0.1:3011`.
- Apache: `ops/apache-eniac.ventures.conf` atende HTTP enquanto o DNS não
  aponta para a VM. Depois da propagação, emita o certificado Let's Encrypt e
  ative `ops/apache-eniac.ventures-le-ssl.conf`; então substitua o vhost HTTP
  por `ops/apache-eniac.ventures-https-redirect.conf`.

## Build

```bash
npm ci --no-audit --no-fund
npm run build
test -f .output/server/index.mjs
for asset in public/media/eniac/*; do test -s ".output/public/${asset#public/}"; done
```

O workflow sincroniza o `package-lock.json` com `package.json` antes da
instalação porque o Lovable pode atualizar dependências e `bun.lock` sem
atualizar o lock do npm. O deploy restaura o lock local ao terminar.

## Deploy

O workflow `.github/workflows/deploy.yml` compila cada push e PR para `main`.
Com `ENABLE_EC2_DEPLOY=true`, usa VPN e SSH para executar `deploy.sh` como
`deploy`. Execução manual na VM:

```bash
sudo -n -u deploy bash /var/www/html/eniacventures/eniac-ventures/deploy.sh
```
