Guias por stack

A detecção automática cobre os casos comuns. Aqui está o que cada stack precisa para subir sem surpresa.

Next.js

Precisa dos scripts build e start no package.json. O Next escuta na porta que vier em PORT, então não fixe a porta no código.

"scripts": {
  "build": "next build",
  "start": "next start"
}

O build do Next usa bastante memória, mas roda fora do limite do seu app. Para o app em si, comece com 512 MB. Se usa Prisma, rode prisma generate no build (por exemplo em postinstall).

Vite / React estático

Se o app é só front-end, publique como static. Ele serve a pasta gerada pelo build, em geral dist, e consome pouquíssima RAM.

{
  "tipo": "static",
  "build": "npm run build"
}

Em app de página única com rotas no navegador, confira que o roteamento funciona ao recarregar uma rota interna.

Express / Node

O servidor tem que escutar em process.env.PORT e em 0.0.0.0. Escutar só em localhost faz o deploy passar e o endereço não responder.

const port = process.env.PORT || 3000
app.listen(port, '0.0.0.0')

E o package.json precisa de "start": "node index.js" (ou o arquivo de entrada que for o seu).

Python: FastAPI e Flask

Liste as dependências em requirements.txt. O comando de start precisa usar a porta de PORT. Com um lumahost.json:

{
  "tipo": "web",
  "start": "uvicorn main:app --host 0.0.0.0 --port $PORT"
}

No Flask, troque por gunicorn app:app --bind 0.0.0.0:$PORT e inclua o gunicorn no requirements.txt.

Bot de Discord com discord.js

Bot não recebe visita, então publique como worker. Worker não tem endereço público nem porta, e é isso que evita o erro de "porta não encontrada".

{
  "tipo": "worker",
  "start": "node index.js",
  "ramMb": 256
}

Guarde o token do bot em uma variável de ambiente (DISCORD_TOKEN), nunca no código.

App exportado do Lovable ou do Bolt

Esses geradores costumam produzir um projeto Vite com React. Suba como static, como no guia do Vite. Se o app usa o Supabase ou outro serviço de fora, coloque as chaves em variáveis de ambiente. As variáveis do Vite que começam com VITE_ precisam existir no momento do build, então defina-as antes de implantar.

Se o projeto trouxe um servidor próprio (uma pasta server ou api), ele é um app web separado do front-end. Sem dúvida sobre como dividir? Fale com o suporte.