> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Como hospedar uma aplicação NestJS

# Como hospedar aplicações NestJS na Square Cloud

Hospedar uma aplicação NestJS na Square Cloud é um processo direto, focado na eficiência. Como o NestJS utiliza TypeScript, o segredo para um deploy bem-sucedido está na compilação (build) e no ajuste correto da porta de escuta.

---

## 1. Ajustando a Porta (Port 80)

A Square Cloud utiliza a **porta 80** para rotear o tráfego da sua aplicação. Por padrão, o NestJS costuma iniciar na porta 3000. Você deve alterar o arquivo `main.ts` para escutar na porta correta.

**No seu arquivo `src/main.ts`:**
```typescript
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // Altere de 3000 para 80
  await app.listen(80);
}
bootstrap();
```

---

## 2. Gerando o Build

Não enviamos a pasta `src` para a hospedagem, pois o Nest compila o código de maneira otimizada para JS. 

Execute o comando de build na sua máquina local:
```bash
npm run build
```
Isso gerará uma pasta chamada **`dist`** na raiz do seu projeto. É esse conteúdo que será executado na Square Cloud.

---

## 3. Preparando o Pacote de Envio

Para um deploy otimizado, você deve criar um arquivo `.zip` contendo os seguintes itens:

*   **A pasta `dist/`:** (Contém seu código compilado).
*   **O arquivo `package.json`:** (Necessário para instalar as dependências de produção).
*   **O arquivo `package-lock.json` ou `yarn.lock`:** (Garante as versões exatas das bibliotecas).

**Importante:** Não inclua a pasta `node_modules`. A Square Cloud instalará as dependências automaticamente no servidor após o upload.

---

## 4. Configurando o Arquivo Principal (Main)

Ao realizar o deploy (seja pelo dashboard ou via arquivo de configuração), você deve apontar para o arquivo de entrada dentro da pasta compilada.

*   **Main File:** `dist/main.js`

Se estiver usando o arquivo `squarecloud.app` ou `squarecloud.config`, a linha ficará assim:
```text
MAIN=dist/main.js
```

---

## 5. Dicas de Ouro para NestJS

*   **Produção:** Certifique-se de que suas dependências de banco de dados e segredos (como chaves de API) estejam configuradas nas **Variáveis de Ambiente (ENVs)** no dashboard da Square, e não "hardcoded" no código.
*   **Prisma/TypeORM:** Se usar algum ORM, lembre-se de rodar as migrations ou gerar o client do banco de dados no seu processo de build ou via scripts de `postinstall` no `package.json`.
*   **Memória:** Aplicações NestJS podem consumir um pouco mais de RAM durante a inicialização devido à injeção de dependências. Monitore os logs para garantir que seu plano possui recursos suficientes.