# Deploy NOGA CODE — arquivos prontos para o servidor

## O que sobe no servidor

| Pasta | Enviar | Não enviar (instalar no servidor) |
|-------|--------|-----------------------------------|
| `backend/` | Código PHP, `public/`, `database/`, `routes/`, `config/`, `storage/` (estrutura vazia) | `vendor/`, `.env` local |
| `frontend/` | Código + `public/assets/` | `node_modules/`, `.next/`, `.env.local` |
| `deploy/` | Scripts e exemplos de config | — |

**Não existe arquivo `.sql` para importar.** O banco é criado com:

```bash
php artisan migrate --force
php artisan db:seed --force
```

---

## 1. MySQL no servidor (painel ou SSH)

1. Crie o banco (ex.: `nogahost_prod`).
2. Crie usuário MySQL com permissão total nesse banco.
3. Anote: host, porta, nome, usuário, senha.

---

## 2. Backend (API Laravel)

### 2.1 Enviar arquivos

Envie a pasta `backend/` para o servidor (FTP, Git, ZIP).

**Document root do domínio da API** deve apontar para:

```
.../backend/public
```

(Nunca aponte para a raiz de `backend/`.)

### 2.2 Arquivo de ambiente

No servidor, copie o modelo:

```bash
cp .env.production.example .env
```

Edite `.env` com dados reais (domínio, MySQL, Mercado Pago).

Gere a chave (uma vez):

```bash
php artisan key:generate
```

### 2.3 Comandos no servidor (SSH)

Na pasta `backend/`:

```bash
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan db:seed --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan noga:sync-catalog
chmod -R 775 storage bootstrap/cache
```

Ou execute o script incluído:

```bash
bash ../deploy/post-deploy.sh
```

### 2.4 Testar API

`GET https://SEU-DOMINIO-API/api/v1/health`

Deve retornar `"status": "ok"` com `database: true`.

---

## 3. Frontend (Next.js)

### 3.1 Variáveis de ambiente

Copie no servidor (pasta `frontend/`):

```bash
cp .env.production.example .env.production
```

Ajuste:

- `NEXT_PUBLIC_API_URL` → URL da API em produção
- `NEXT_PUBLIC_SITE_URL` → URL do site

### 3.2 Build e execução (Node no servidor)

```bash
cd frontend
npm ci
npm run build
npm run start
```

Porta padrão Next: `3000`. Use PM2, systemd ou proxy reverso (Nginx) para HTTPS.

Exemplos de proxy: `deploy/nginx.conf.example` e `deploy/apache.conf.example`.

---

## 4. Redis (opcional)

- **Com Redis:** use `CACHE_STORE=redis` no `.env` (como em `.env.production.example`).
- **Sem Redis (hospedagem simples):** use o bloco comentado no `.env.production.example` (`file` / `sync`).

---

## 5. Pacote ZIP no Windows (opcional)

Na raiz do projeto:

```powershell
powershell -ExecutionPolicy Bypass -File deploy\package-release.ps1
```

Gera `deploy/output/nogahost-release.zip` pronto para enviar (sem `node_modules` nem `vendor`).

---

## 6. Checklist final

- [ ] Banco MySQL criado
- [ ] `backend/.env` preenchido
- [ ] `migrate` e `db:seed` executados
- [ ] `public/` é o document root da API
- [ ] `frontend/.env.production` com URLs corretas
- [ ] `npm run build` + site no ar
- [ ] `/api/v1/health` OK
- [ ] Login e painel testados
- [ ] Webhook Mercado Pago apontando para `/api/v1/webhooks/mercadopago`
