> ## 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 FastAPI

## 1. Pré-requisitos

* **Conta na Square Cloud:** Crie sua conta via [Página de Registro](https://squarecloud.app/pt-br/signup) (E-mail ou GitHub).
* **Plano Ativo:** É necessário um plano pago para realizar a hospedagem. Confira os [preços aqui](https://squarecloud.app/pt-br/pricing).

---

## 2. Configuração de Rede

Para que sua API seja acessível externamente, o webserver deve estar configurado para operar na porta **80**. Diferente de ambientes locais (onde usamos 8000), a Square Cloud utiliza a porta 80 para o roteamento público.

### Exemplo de Estrutura de Código (`app/main.py`)
```python
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"status": "online", "framework": "FastAPI"}
```

---

## 3. Realizando o Deploy

1.  **Limpeza do Projeto:** Remova pastas de cache como `__pycache__` ou pastas de ambientes virtuais (`.venv`).
2.  **Compactação:** Crie um arquivo `.zip` contendo a pasta do seu código (ex: `app/`) e o arquivo `requirements.txt`.
3.  **Upload:** No Dashboard da Square Cloud, envie o arquivo `.zip`.
4.  **Publicação Web:** Durante o envio, localize e marque a opção **"Publicar na Web"**.
5.  **Subdomínio:** Defina o nome do seu subdomínio gratuito (ex: `minha-api.squareweb.app`).
6. **Comando de Início para Produção:** O FastAPI agora possui um comando CLI integrado que facilita a execução em produção, garantindo que o servidor utilize os workers de forma eficiente e escute na porta correta.
No momento do envio ou no seu arquivo `squarecloud.app`, defina o comando de início como:
```bash
python -m fastapi run app/main.py --port 80
```
* **`run`**: Comando otimizado para execução em produção.
* **`app/main.py`**: O caminho para o arquivo onde sua instância FastAPI está localizada.
* **`--port 80`**: Define a porta obrigatória para o funcionamento na Square Cloud.

---

## 5. Domínios Personalizados (Plano Standard+)

Se você utiliza o plano **Standard ou superior**, você pode configurar um domínio profissional (ex: `api.seudominio.com`):
* A configuração é feita na aba **Network** do Dashboard.
* O **SSL (HTTPS)** é gerado automaticamente, garantindo que sua API seja segura por padrão.

---

## 6. Dicas de Performance

* **Validação Automática:** O FastAPI utiliza Pydantic para validação de dados. Certifique-se de definir os schemas para ganhar performance na serialização de JSON.
* **Variáveis de Ambiente:** Use a aba **ENV** no Dashboard para gerenciar chaves de segurança e conexões de banco de dados, acessando-as via `os.getenv()`.
* **Monitoramento:** Acompanhe os logs em tempo real pelo Dashboard para verificar o carregamento dos workers do servidor.
