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
| Framework | Como é detectado | Comando de build | Comando de start |
|---|---|---|---|
| Next.js | "next" em dependencies | npm run build | npm start |
| NestJS | "@nestjs/core" em dependencies | npm run build | npm start |
| Express / Node | package.json sem build | — | npm start |
| Static | index.html na raiz | — | Nginx |
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"
}
}
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"
}
}
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
index.html obrigatório na raizO 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
.envcom 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