Pular para o conteúdo principal

Hospedando Sites e APIs

O BotGate Hosting suporta 4 tipos de aplicações web, cada uma com seu ciclo de build e execução próprio. O sistema detecta o framework automaticamente com base nos arquivos presentes na raiz do projeto.


🔍 Detecção Automática de Framework

FrameworkComo é detectadoComando de buildComando de start
Next.js"next" em dependenciesnpm run buildnpm start
NestJS"@nestjs/core" em dependenciesnpm run buildnpm start
Express / Nodepackage.json sem buildnpm start
Staticindex.html na raizNginx
Detecção inteligente

Você não precisa configurar nada além do seu package.json. O BotGate detecta o framework automaticamente e aplica o procedimento de build correto.


⚡ Next.js

Estrutura esperada

meu-site-nextjs.zip
├── package.json ← com "next" em dependencies e scripts: build + start
├── next.config.js ← (opcional)
├── app/ ← App Router (Next.js 13+)
│ └── page.tsx
└── public/

package.json exemplo

{
"name": "meu-site",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start -p $PORT"
},
"dependencies": {
"next": "^14.0.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
}
}
Porta dinâmica

Use $PORT no script start. O BotGate injeta automaticamente a porta interna do container.


🏗️ NestJS

Estrutura esperada

meu-api-nestjs.zip
├── package.json ← com "@nestjs/core" em dependencies
├── tsconfig.json
└── src/
└── main.ts

package.json exemplo

{
"name": "minha-api",
"scripts": {
"build": "nest build",
"start": "node dist/main"
},
"dependencies": {
"@nestjs/core": "^10.0.0",
"@nestjs/common": "^10.0.0",
"@nestjs/platform-express": "^10.0.0"
},
"devDependencies": {
"@nestjs/cli": "^10.0.0",
"typescript": "^5.0.0"
}
}
Compilação automática

O BotGate executa npm run build automaticamente antes de iniciar o servidor, compilando o TypeScript para dist/.


📡 Express / Node.js (sem build)

Estrutura esperada

meu-servidor.zip
├── package.json ← com script "start"
├── index.js ← ou server.js
└── routes/

package.json exemplo

{
"name": "meu-servidor",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "^4.18.0"
}
}

index.js exemplo

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
res.json({ status: 'online', message: 'API no BotGate!' });
});

app.listen(PORT, () => {
console.log(`✅ Servidor rodando na porta ${PORT}`);
});

🌐 Sites Estáticos (HTML/CSS/JS)

Sites estáticos são servidos diretamente via Nginx, sem nenhum processo Node.js rodando.

Estrutura esperada

meu-site-estatico.zip
├── index.html ← obrigatório na raiz
├── style.css
├── script.js
└── assets/
└── logo.png
perigo
index.html obrigatório na raiz

O BotGate identifica sites estáticos pela presença do index.html na raiz do projeto. Se não houver, o sistema tentará fazer build como Node.js.


🚫 Boas Práticas Gerais

  • NÃO suba node_modules/ — o BotGate reinstala automaticamente.
  • NÃO use portas hardcoded — use sempre process.env.PORT.
  • NÃO suba arquivos .env com tokens reais — configure variáveis pelo painel.
  • TypeScript: projetos NestJS e Next.js são compilados automaticamente — não precisa subir dist/.

🔑 Variáveis de Ambiente

Configure na aba Variáveis do painel antes do deploy:

DATABASE_URL=postgres://...
API_KEY=sua_chave_aqui

💡 Próxima etapa: Domínios e Rede