# Loja Felipe Tosin — informações para hospedagem

**Resumo.** Site de e-commerce de arte feito em Next.js 16 (React 19). Parte das páginas é estática e parte roda no servidor (checkout, cálculo de frete e aviso de pedido). Por isso precisa de **Node.js em execução**; não basta copiar arquivos para `public_html`.

## 1. Requisitos do servidor
- **Node.js 20.9 ou superior** (recomendado 22 ou 24 LTS; desenvolvido com 24.19) e npm.
- Aplicação Node rodando como serviço permanente (reinicia sozinha), atrás do Apache com proxy reverso e **HTTPS**.
- **Certificado SSL válido** (AutoSSL/Let's Encrypt). É obrigatório: o Mercado Pago só aceita retorno e notificação em https.
- **Saída para a internet** (HTTPS, porta 443) para `api.mercadopago.com` e `www.melhorenvio.com.br`, e SMTP do Gmail (`smtp.gmail.com`, portas 465 ou 587) para o e-mail de aviso de pedido. Algumas hospedagens bloqueiam SMTP de saída; precisa estar liberado.
- **Entrada pública**: a rota `POST /api/webhooks/mercadopago` precisa ser alcançável pelo Mercado Pago (sem bloqueio de firewall ou ModSecurity).
- Disco: cerca de 65 MB de imagens mais as dependências. Memória: estimativa de 512 MB para rodar; o build usa mais e pode ser feito fora do servidor.

## 2. Como rodar
```
npm ci
npm run build
npm start        # porta 3000 por padrão; use PORT=xxxx para outra
```
- Build já testado em 22/10/2026: Next.js 16.3.0, 46 páginas, sem erros — e **sem precisar das senhas na hora do build** (elas só são lidas quando alguém usa o checkout, o frete ou o aviso de pedido).
- O build baixa as fontes do Google, então precisa de internet nessa hora.
- Enviar o código **sem** `node_modules`, sem `.next` e **sem `.env.local`**.

## 3. Servidor atual do proprietário (cPanel/WHM)
- IP `66.94.110.232`, SSH na porta **22000** (não padrão), conta cPanel `felipetosin`.
- O app Node **não fica dentro de `public_html`**. Ele fica numa pasta própria (ex.: `~/loja`) e é ligado ao domínio pelo **Application Manager** (Passenger) ou **Setup Node.js App** (CloudLinux).
- Se esses recursos não aparecem no cPanel, o administrador (root/WHM) precisa habilitar Node.js: EasyApache 4 com `ea-nodejs` e `ea-apache2-mod-passenger`, ou o Node.js Selector do CloudLinux.
- Acesso por chave SSH: pendente. A chave pública de deploy precisa ser importada e **autorizada** em cPanel › SSH Access › Manage SSH Keys. O acesso é fornecido pelo proprietário, nunca por este documento.

## 3.1. Se o servidor não puder rodar Node.js
Plano B: hospedar em outro lugar que aceite uso comercial sem mensalidade (por exemplo Cloudflare). O plano gratuito da Vercel não pode ser usado em loja.

## 4. Variáveis de ambiente
Os valores são enviados pelo proprietário por canal seguro, **nunca por e-mail ou mensagem em texto aberto**. O arquivo `.env.example`, no pacote, lista os nomes sem valores. `SITE_URL` também alimenta o `robots.txt` e o mapa do site (`/sitemap.xml`).

| Variável | Para quê | Secreta |
|---|---|---|
| `SITE_URL` | Endereço público com https, sem barra final. `https://www.felipetosin.com.br` | não |
| `SITE_PRIVADO` | `1` enquanto o site estiver só para convidados (pede aos buscadores para não indexar). Remover quando for divulgar. | não |
| `MERCADOPAGO_ACCESS_TOKEN` | Cobrança (Mercado Pago, conta real) | **sim** |
| `MELHOR_ENVIO_TOKEN` | Cálculo de frete (Melhor Envio) | **sim** |
| `MELHOR_ENVIO_FROM_CEP` | CEP de origem dos envios (`80710370`) | não |
| `GMAIL_USER` | Conta que envia e recebe o aviso de pedido | não |
| `GMAIL_APP_PASSWORD` | Senha de app do Gmail | **sim** |

Guardar no ambiente do próprio app (cPanel) ou em arquivo fora de `public_html` com permissão 600. Nunca em pasta pública nem no Git.

## 5. Domínio e DNS
- **Domínio principal: `felipetosin.com.br`**, endereço `https://www.felipetosin.com.br` (registrado no Registro.br em 22/10/2026). O `felipetosin.art.br`, se existir, fica como secundário e só redireciona (301) para o `.com.br`.
- O proprietário cria no Registro.br o apontamento **A** para `66.94.110.232`, tanto para `www` quanto para o domínio sem `www`. O domínio precisa estar na conta cPanel com AutoSSL ativo, e o endereço sem `www` deve redirecionar (301) para o `www`.
- O proxy deve repassar o `Host` original e `X-Forwarded-Proto: https`.

**Se também usar o `.art.br`:** adicioná-lo à conta cPanel com AutoSSL, apontar o DNS e redirecionar (301) todas as páginas para o endereço equivalente no `.com.br`.

## 6. Teste depois de publicar
1. A página inicial e a página de uma obra abrem em https, com cadeado.
2. Em uma obra, calcular o frete por CEP devolve opções de transportadoras.
3. O botão Comprar leva ao Mercado Pago, e os links de retorno começam com `https://` e o domínio correto.
4. `POST /api/webhooks/mercadopago` responde 200 e, em pagamento aprovado, chega e-mail de aviso ao proprietário.
5. Reiniciar o servidor: o site volta sozinho.

## 7. Observações
- Não há banco de dados e o site não grava nada no disco. Catálogo, preços e a lista de obras vendidas ficam no código (`src/lib/products.ts`); marcar uma obra como vendida é manual.
- Atualizações: novo build e reinício do app.
