Files
App-Estoque-LiberiKids/scripts/deploy-local.sh
2025-10-14 14:04:17 -03:00

128 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# 🚀 Script de Deploy Local - Liberi Kids
# Execute: chmod +x scripts/deploy-local.sh && ./scripts/deploy-local.sh
echo "🚀 Iniciando deploy local do Liberi Kids..."
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Função para log colorido
log() {
echo -e "${GREEN}[INFO]${NC} $1"
}
warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Verificar se Node.js está instalado
if ! command -v node &> /dev/null; then
error "Node.js não encontrado. Instale Node.js 18+ primeiro."
exit 1
fi
# Verificar versão do Node.js
NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
if [ "$NODE_VERSION" -lt 18 ]; then
error "Node.js versão 18+ é necessária. Versão atual: $(node -v)"
exit 1
fi
log "Node.js $(node -v) encontrado ✓"
# Instalar dependências do servidor
log "Instalando dependências do servidor..."
npm install
if [ $? -ne 0 ]; then
error "Falha ao instalar dependências do servidor"
exit 1
fi
# Entrar na pasta do cliente
cd client
# Instalar dependências do cliente
log "Instalando dependências do frontend..."
npm install
if [ $? -ne 0 ]; then
error "Falha ao instalar dependências do frontend"
exit 1
fi
# Fazer build do frontend
log "Fazendo build do frontend..."
npm run build
if [ $? -ne 0 ]; then
error "Falha no build do frontend"
exit 1
fi
# Voltar para pasta raiz
cd ..
# Verificar se arquivo .env existe
if [ ! -f ".env" ]; then
warn "Arquivo .env não encontrado. Criando exemplo..."
cat > .env << EOF
# Configurações do Supabase
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_ANON_KEY=sua_chave_anonima_aqui
# Configurações do servidor
NODE_ENV=production
PORT=5000
EOF
warn "Configure o arquivo .env com suas credenciais do Supabase!"
echo "Edite o arquivo .env antes de continuar."
exit 1
fi
# Verificar se PM2 está instalado
if ! command -v pm2 &> /dev/null; then
log "PM2 não encontrado. Instalando PM2..."
npm install -g pm2
fi
# Parar processo anterior se existir
pm2 delete liberi-kids 2>/dev/null || true
# Iniciar aplicação com PM2
log "Iniciando aplicação com PM2..."
pm2 start server-supabase.js --name "liberi-kids" --env production
# Configurar PM2 para iniciar automaticamente
log "Configurando PM2 para inicialização automática..."
pm2 startup
pm2 save
# Status final
log "Deploy concluído com sucesso! 🎉"
echo ""
echo -e "${BLUE}📊 Status da aplicação:${NC}"
pm2 status
echo ""
echo -e "${BLUE}🌐 Acesso:${NC}"
echo " Local: http://localhost:5000"
echo " Rede: http://$(hostname -I | awk '{print $1}'):5000"
echo ""
echo -e "${BLUE}📋 Comandos úteis:${NC}"
echo " Ver logs: pm2 logs liberi-kids"
echo " Reiniciar: pm2 restart liberi-kids"
echo " Parar: pm2 stop liberi-kids"
echo " Status: pm2 status"
echo ""
log "Aplicação rodando em produção! ✓"