Atualiza site via novo pacote
This commit is contained in:
@@ -1,37 +0,0 @@
|
||||
name: Deploy HML Avanzato
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
deploy-hml:
|
||||
runs-on: linux_amd64
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Instalar dependências
|
||||
run: npm install
|
||||
|
||||
- name: Build projeto
|
||||
run: npm run build
|
||||
|
||||
- name: Compactar dist
|
||||
run: tar -czf dist.tar.gz dist
|
||||
|
||||
- name: Enviar para servidor HML
|
||||
run: scp -o StrictHostKeyChecking=no -i /data/avz_hml_deploy dist.tar.gz root@191.252.100.174:/tmp/avz-site-hml-dist.tar.gz
|
||||
|
||||
- name: Publicar HML
|
||||
run: |
|
||||
ssh -o StrictHostKeyChecking=no -i /data/avz_hml_deploy root@191.252.100.174 '
|
||||
rm -rf /opt/avanzato/site-hml/app/dist_old
|
||||
mv /opt/avanzato/site-hml/app/dist /opt/avanzato/site-hml/app/dist_old
|
||||
mkdir -p /opt/avanzato/site-hml/app/dist
|
||||
tar -xzf /tmp/avz-site-hml-dist.tar.gz -C /opt/avanzato/site-hml/app
|
||||
rm -f /tmp/avz-site-hml-dist.tar.gz
|
||||
docker restart avanzato-site-hml
|
||||
'
|
||||
+41
-4
@@ -1,5 +1,42 @@
|
||||
node_modules/
|
||||
dist/
|
||||
.DS_Store
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Build
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Cache
|
||||
.cache
|
||||
.vite
|
||||
|
||||
# Dependencias
|
||||
node_modules
|
||||
|
||||
# Ambiente (NUNCA commite!)
|
||||
.env
|
||||
*.zip
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Editor
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Scripts de deploy local
|
||||
scripts/.env.local
|
||||
|
||||
+250
@@ -0,0 +1,250 @@
|
||||
# Fluxo de Desenvolvimento - Avanzato
|
||||
|
||||
## Visao Geral
|
||||
|
||||
```
|
||||
+---------------------------------------------------------------+
|
||||
| SEU MAC (Desenvolvimento) |
|
||||
| |
|
||||
| +-------------------+ bash scripts/dev.sh start |
|
||||
| | Codigo Fonte | --> http://localhost:5173 |
|
||||
| | app/src/ | |
|
||||
| +-------------------+ |
|
||||
| | |
|
||||
| | bash scripts/dev.sh build-hom |
|
||||
| | bash scripts/dev.sh deploy-hom |
|
||||
| v |
|
||||
+---------------------------------------------------------------+
|
||||
|
|
||||
v
|
||||
+---------------------------------------------------------------+
|
||||
| SERVIDOR - HOMOLOGACAO |
|
||||
| |
|
||||
| Gitea (git push) --> Hook --> Build --> Nginx |
|
||||
| |
|
||||
| https://homologacao.avanzato.com.br |
|
||||
| - Mautic: desativado |
|
||||
| - Google Ads: desativado |
|
||||
| - Facebook Pixel: desativado |
|
||||
| - noindex/nofollow (nao aparece no Google) |
|
||||
| |
|
||||
+---------------------------------------------------------------+
|
||||
|
|
||||
| Aprovado? bash scripts/dev.sh deploy-prod
|
||||
v
|
||||
+---------------------------------------------------------------+
|
||||
| SERVIDOR - PRODUCAO |
|
||||
| |
|
||||
| https://avanzato.com.br |
|
||||
| - Mautic: ativo (forms, tracking) |
|
||||
| - Google Ads: ativo |
|
||||
| - Facebook Pixel: ativo |
|
||||
| - Indexado no Google |
|
||||
| |
|
||||
+---------------------------------------------------------------+
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. Primeira Configuracao (faca uma vez)
|
||||
|
||||
### 1.1 Instalar Node.js 20+
|
||||
|
||||
```bash
|
||||
# Instalar via Homebrew
|
||||
brew install node@20
|
||||
|
||||
# Verificar
|
||||
node -v # v20.x.x
|
||||
npm -v # 10.x.x
|
||||
```
|
||||
|
||||
### 1.2 Instalar dependencias
|
||||
|
||||
```bash
|
||||
cd /Users/avanzato/Projetos/Avanzato/avanzato-site/app
|
||||
npm install
|
||||
```
|
||||
|
||||
### 1.3 Configurar acesso aos servidores
|
||||
|
||||
```bash
|
||||
# Copiar template
|
||||
cp scripts/.env.local.example scripts/.env.local
|
||||
|
||||
# Editar com seus dados
|
||||
nano scripts/.env.local
|
||||
```
|
||||
|
||||
Conteudo do `.env.local`:
|
||||
|
||||
```bash
|
||||
# Homologacao
|
||||
SSH_HOM_HOST=192.168.1.100 # ou IP publico
|
||||
SSH_HOM_USER=deploy
|
||||
SSH_HOM_PATH=/var/www/avanzato-hom
|
||||
|
||||
# Producao
|
||||
SSH_PROD_HOST=201.45.120.30 # ou IP publico
|
||||
SSH_PROD_USER=deploy
|
||||
SSH_PROD_PATH=/var/www/avanzato
|
||||
```
|
||||
|
||||
### 1.4 Configurar chave SSH (se ainda nao tiver)
|
||||
|
||||
```bash
|
||||
# Gerar chave
|
||||
ssh-keygen -t ed25519 -C "dev@avanzato" -f ~/.ssh/id_ed25519
|
||||
|
||||
# Copiar para o servidor de homologacao
|
||||
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@SEU_SERVIDOR_HOM
|
||||
|
||||
# Copiar para o servidor de producao
|
||||
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@SEU_SERVIDOR_PROD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Desenvolvimento Diario
|
||||
|
||||
### 2.1 Iniciar servidor local
|
||||
|
||||
```bash
|
||||
bash scripts/dev.sh start
|
||||
# ou
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Acesse: **http://localhost:5173**
|
||||
|
||||
- Hot reload funciona automaticamente
|
||||
- Mautic/Google Ads/Facebook Pixel estao em modo simulacao
|
||||
- Edite qualquer arquivo `.tsx` e veja a mudanca ao vivo
|
||||
|
||||
### 2.2 Comandos uteis durante desenvolvimento
|
||||
|
||||
```bash
|
||||
# Ver ajuda completa
|
||||
bash scripts/dev.sh help
|
||||
|
||||
# Build para homologacao
|
||||
bash scripts/dev.sh build-hom
|
||||
|
||||
# Preview do build (para testar antes de deploy)
|
||||
bash scripts/dev.sh preview
|
||||
|
||||
# Limpar caches quando algo estranho acontecer
|
||||
bash scripts/dev.sh clean
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Deploy para Homologacao
|
||||
|
||||
### Metodo 1: Script local (rapido)
|
||||
|
||||
```bash
|
||||
# 1. Build
|
||||
bash scripts/dev.sh build-hom
|
||||
|
||||
# 2. Deploy
|
||||
bash scripts/dev.sh deploy-hom
|
||||
```
|
||||
|
||||
### Metodo 2: Git push (CI/CD)
|
||||
|
||||
```bash
|
||||
# Adicionar remote do Gitea (faca uma vez)
|
||||
git remote add homolog ssh://git@SEU_SERVIDOR_HOM:22/gitea/avanzato-site.git
|
||||
|
||||
# Sempre que quiser deployar
|
||||
git add .
|
||||
git commit -m "descricao da mudanca"
|
||||
git push homolog main
|
||||
```
|
||||
|
||||
O Gitea vai executar o pipeline automaticamente e deployar.
|
||||
|
||||
---
|
||||
|
||||
## 4. Deploy para Producao
|
||||
|
||||
**ATENCAO: Sempre teste em homologacao primeiro!**
|
||||
|
||||
```bash
|
||||
# 1. Build de producao
|
||||
bash scripts/dev.sh build
|
||||
|
||||
# 2. Deploy (pede confirmacao)
|
||||
bash scripts/dev.sh deploy-prod
|
||||
# Digite 'sim' para confirmar
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Estrutura de Comandos
|
||||
|
||||
| Comando | O que faz | URL |
|
||||
|---------|-----------|-----|
|
||||
| `bash scripts/dev.sh start` | Servidor dev local | http://localhost:5173 |
|
||||
| `bash scripts/dev.sh build` | Build producao | - |
|
||||
| `bash scripts/dev.sh build-hom` | Build homologacao | - |
|
||||
| `bash scripts/dev.sh preview` | Preview do build | http://localhost:4173 |
|
||||
| `bash scripts/dev.sh deploy-hom` | Deploy homologacao | https://homologacao.avanzato.com.br |
|
||||
| `bash scripts/dev.sh deploy-prod` | Deploy producao | https://avanzato.com.br |
|
||||
| `bash scripts/dev.sh clean` | Limpa caches | - |
|
||||
| `bash scripts/dev.sh help` | Ajuda | - |
|
||||
|
||||
---
|
||||
|
||||
## 6. Checklist antes de cada deploy
|
||||
|
||||
### Homologacao
|
||||
- [ ] Testei localmente (`npm run dev`)
|
||||
- [ ] Build funciona (`bash scripts/dev.sh build-hom`)
|
||||
- [ ] Nao ha erros no console do navegador
|
||||
|
||||
### Producao
|
||||
- [ ] Testei em homologacao
|
||||
- [ ] Aprovado pelo time
|
||||
- [ ] Build de producao (`bash scripts/dev.sh build`)
|
||||
- [ ] Backup esta funcionando no servidor
|
||||
|
||||
---
|
||||
|
||||
## 7. Solucao de Problemas
|
||||
|
||||
### Erro: "Cannot find module"
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### Erro: "dist/ nao encontrado"
|
||||
```bash
|
||||
bash scripts/dev.sh build
|
||||
```
|
||||
|
||||
### Erro: "Permission denied" no deploy
|
||||
```bash
|
||||
# Verificar SSH
|
||||
ssh deploy@SEU_SERVIDOR "echo OK"
|
||||
|
||||
# Se nao funcionar, recopiar chave
|
||||
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@SEU_SERVIDOR
|
||||
```
|
||||
|
||||
### Site nao carrega depois do deploy
|
||||
```bash
|
||||
# Verificar no servidor
|
||||
ssh deploy@SEU_SERVIDOR "ls -la /var/www/avanzato"
|
||||
ssh deploy@SEU_SERVIDOR "sudo systemctl status nginx"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Dicas
|
||||
|
||||
1. **Nunca edite diretamente no servidor** - Sempre edite local e deploy
|
||||
2. **Sempre teste em homolog primeiro** - Antes de ir pra prod
|
||||
3. **Commits frequentes** - Facilita rollback se algo der errado
|
||||
4. **Mantenha o .env.local seguro** - Nunca commite este arquivo
|
||||
Binary file not shown.
Binary file not shown.
+6
-4
@@ -49,10 +49,6 @@
|
||||
fbq('init', '1223271852059785');
|
||||
fbq('track', 'PageView');
|
||||
</script>
|
||||
<noscript>
|
||||
<img height="1" width="1" style="display:none"
|
||||
src="https://www.facebook.com/tr?id=1223271852059785&ev=PageView&noscript=1"/>
|
||||
</noscript>
|
||||
|
||||
<!-- Mautic Tracking -->
|
||||
<script>
|
||||
@@ -217,6 +213,12 @@
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
|
||||
<!-- Facebook Pixel noscript (moved from head to body to fix parse5 warning) -->
|
||||
<noscript>
|
||||
<img height="1" width="1" style="display:none"
|
||||
src="https://www.facebook.com/tr?id=1223271852059785&ev=PageView&noscript=1"/>
|
||||
</noscript>
|
||||
|
||||
<!-- Noscript content for SEO -->
|
||||
<noscript>
|
||||
<div style="padding: 20px; text-align: center; font-family: Urbanist, Arial, sans-serif; background: #0e0e0e; color: white; min-height: 100vh;">
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 35 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 36 KiB |
@@ -0,0 +1,23 @@
|
||||
# ============================================================================
|
||||
# CONFIGURACAO DO AMBIENTE - Avanzato
|
||||
# ============================================================================
|
||||
# Copie este arquivo para .env.local e preencha com seus dados.
|
||||
#
|
||||
# cp scripts/.env.local.example scripts/.env.local
|
||||
#
|
||||
# NUNCA commite o arquivo .env.local (ja esta no .gitignore)
|
||||
# ============================================================================
|
||||
|
||||
# --- SERVIDOR DE HOMOLOGACAO ---
|
||||
SSH_HOM_HOST=IP_OU_HOSTNAME_DO_SERVIDOR_HOM
|
||||
SSH_HOM_USER=root
|
||||
SSH_HOM_PATH=/var/www/avanzato-hom
|
||||
|
||||
# --- SERVIDOR DE PRODUCAO ---
|
||||
SSH_PROD_HOST=IP_OU_HOSTNAME_DO_SERVIDOR_PROD
|
||||
SSH_PROD_USER=root
|
||||
SSH_PROD_PATH=/var/www/avanzato
|
||||
|
||||
# --- SSH (opcional - se usa porta diferente ou chave especifica) ---
|
||||
# SSH_PORT=22
|
||||
# SSH_KEY=~/.ssh/id_ed25519
|
||||
+327
@@ -0,0 +1,327 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Script de Desenvolvimento Local - Avanzato
|
||||
# ============================================================================
|
||||
# Uso: bash scripts/dev.sh [comando]
|
||||
#
|
||||
# Comandos:
|
||||
# start - Inicia servidor de desenvolvimento (padrao)
|
||||
# build - Build de producao
|
||||
# build-hom - Build para homologacao
|
||||
# preview - Preview do build local
|
||||
# deploy-hom - Deploy para homologacao
|
||||
# deploy-prod - Deploy para producao
|
||||
# clean - Limpa dist/ e node_modules/.cache
|
||||
# help - Mostra esta ajuda
|
||||
#
|
||||
# EXEMPLOS:
|
||||
# bash scripts/dev.sh start
|
||||
# bash scripts/dev.sh build-hom
|
||||
# bash scripts/dev.sh deploy-hom
|
||||
# ============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Cores
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Diretorios
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
DIST_DIR="${PROJECT_DIR}/dist"
|
||||
|
||||
# Comando
|
||||
CMD="${1:-start}"
|
||||
|
||||
# Banner
|
||||
show_banner() {
|
||||
echo ""
|
||||
echo -e "${CYAN}==========================================${NC}"
|
||||
echo -e "${CYAN} Avanzato - Ambiente de Desenvolvimento${NC}"
|
||||
echo -e "${CYAN}==========================================${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Verificar dependencias
|
||||
check_deps() {
|
||||
if ! command -v node &> /dev/null; then
|
||||
echo -e "${RED}Erro: Node.js nao encontrado!${NC}"
|
||||
echo "Instale: https://nodejs.org/ (versao 20+)"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d "${PROJECT_DIR}/node_modules" ]; then
|
||||
echo -e "${YELLOW}node_modules nao encontrado. Instalando...${NC}"
|
||||
cd "$PROJECT_DIR" && npm install
|
||||
fi
|
||||
}
|
||||
|
||||
# Start - Desenvolvimento local
|
||||
cmd_start() {
|
||||
show_banner
|
||||
check_deps
|
||||
echo -e "${GREEN}Iniciando servidor de desenvolvimento...${NC}"
|
||||
echo -e "Acesse: ${CYAN}http://localhost:5173${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Ambiente: DESENVOLVIMENTO LOCAL${NC}"
|
||||
echo -e "- Mautic: ${YELLOW}modo simulacao${NC}"
|
||||
echo -e "- Google Ads: ${YELLOW}desativado${NC}"
|
||||
echo -e "- Facebook Pixel: ${YELLOW}desativado${NC}"
|
||||
echo ""
|
||||
cd "$PROJECT_DIR" && npm run dev
|
||||
}
|
||||
|
||||
# Build - Producao
|
||||
cmd_build() {
|
||||
show_banner
|
||||
check_deps
|
||||
echo -e "${BLUE}[1/2]${NC} Build de PRODUCAO..."
|
||||
cd "$PROJECT_DIR"
|
||||
npm run build
|
||||
echo ""
|
||||
echo -e "${BLUE}[2/2]${NC} Configurando robots.txt para producao..."
|
||||
cp "${PROJECT_DIR}/public/robots-producao.txt" "${DIST_DIR}/robots.txt"
|
||||
echo -e "${GREEN}OK${NC} - Build de producao pronto em dist/"
|
||||
echo ""
|
||||
echo -e "Para preview: ${CYAN}bash scripts/dev.sh preview${NC}"
|
||||
}
|
||||
|
||||
# Build - Homologacao
|
||||
cmd_build_hom() {
|
||||
show_banner
|
||||
check_deps
|
||||
echo -e "${YELLOW}[1/2]${NC} Build para HOMOLOGACAO..."
|
||||
cd "$PROJECT_DIR"
|
||||
npm run build
|
||||
echo ""
|
||||
echo -e "${YELLOW}[2/2]${NC} Configurando anti-indexacao..."
|
||||
# robots.txt ja esta com noindex por padrao
|
||||
echo -e "${GREEN}OK${NC} - Build de homologacao pronto em dist/"
|
||||
echo ""
|
||||
echo -e "Para deploy: ${CYAN}bash scripts/dev.sh deploy-hom${NC}"
|
||||
}
|
||||
|
||||
# Preview do build
|
||||
cmd_preview() {
|
||||
if [ ! -d "$DIST_DIR" ]; then
|
||||
echo -e "${RED}Erro: Pasta dist/ nao encontrada!${NC}"
|
||||
echo "Execute primeiro: bash scripts/dev.sh build"
|
||||
exit 1
|
||||
fi
|
||||
show_banner
|
||||
echo -e "${GREEN}Iniciando preview do build...${NC}"
|
||||
echo -e "Acesse: ${CYAN}http://localhost:4173${NC}"
|
||||
echo ""
|
||||
cd "$PROJECT_DIR" && npm run preview
|
||||
}
|
||||
|
||||
# Deploy Homologacao
|
||||
cmd_deploy_hom() {
|
||||
show_banner
|
||||
echo -e "${YELLOW}Deploy para HOMOLOGACAO${NC}"
|
||||
echo ""
|
||||
|
||||
# Verificar se dist existe
|
||||
if [ ! -d "$DIST_DIR" ]; then
|
||||
echo -e "${RED}Erro: dist/ nao encontrado!${NC}"
|
||||
echo "Execute: bash scripts/dev.sh build-hom"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar configuracao SSH
|
||||
if [ -z "${SSH_HOM_HOST}" ]; then
|
||||
echo -e "${YELLOW}Configure as variaveis de ambiente:${NC}"
|
||||
echo ""
|
||||
echo " export SSH_HOM_HOST=IP_DO_SERVIDOR_HOM"
|
||||
echo " export SSH_HOM_USER=usuario"
|
||||
echo " export SSH_HOM_PATH=/var/www/avanzato-hom"
|
||||
echo ""
|
||||
echo "Ou edite o arquivo: ${PROJECT_DIR}/scripts/.env.local"
|
||||
echo ""
|
||||
|
||||
# Tentar carregar .env.local
|
||||
if [ -f "${PROJECT_DIR}/scripts/.env.local" ]; then
|
||||
echo -e "${BLUE}Carregando scripts/.env.local...${NC}"
|
||||
source "${PROJECT_DIR}/scripts/.env.local"
|
||||
fi
|
||||
|
||||
if [ -z "${SSH_HOM_HOST}" ]; then
|
||||
echo -e "${RED}Configuracao nao encontrada. Abortando.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}[1/3]${NC} Verificando conexao..."
|
||||
if ! ssh -o ConnectTimeout=10 "${SSH_HOM_USER}@${SSH_HOM_HOST}" "echo 'OK'" 2>/dev/null; then
|
||||
echo -e "${RED}Erro: Nao foi possivel conectar ao servidor.${NC}"
|
||||
echo "Verifique SSH: ssh-copy-id -i ~/.ssh/id_ed25519.pub ${SSH_HOM_USER}@${SSH_HOM_HOST}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}OK${NC}"
|
||||
|
||||
echo -e "${BLUE}[2/3]${NC} Enviando arquivos..."
|
||||
rsync -avz --delete \
|
||||
--exclude='backups' \
|
||||
"$DIST_DIR/" \
|
||||
"${SSH_HOM_USER}@${SSH_HOM_HOST}:${SSH_HOM_PATH}/"
|
||||
echo -e "${GREEN}OK${NC}"
|
||||
|
||||
echo -e "${BLUE}[3/3]${NC} Finalizando..."
|
||||
ssh "${SSH_HOM_USER}@${SSH_HOM_HOST}" "sudo systemctl reload nginx 2>/dev/null || true"
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}Deploy para HOMOLOGACAO concluido!${NC}"
|
||||
echo -e "Acesse: ${CYAN}https://homologacao.avanzato.com.br${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Deploy Producao
|
||||
cmd_deploy_prod() {
|
||||
show_banner
|
||||
echo -e "${RED} Deploy para PRODUCAO${NC}"
|
||||
echo ""
|
||||
|
||||
# Verificar se dist existe
|
||||
if [ ! -d "$DIST_DIR" ]; then
|
||||
echo -e "${RED}Erro: dist/ nao encontrado!${NC}"
|
||||
echo "Execute: bash scripts/dev.sh build"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar configuracao SSH
|
||||
if [ -z "${SSH_PROD_HOST}" ]; then
|
||||
echo -e "${YELLOW}Configure as variaveis de ambiente:${NC}"
|
||||
echo ""
|
||||
echo " export SSH_PROD_HOST=IP_DO_SERVIDOR_PROD"
|
||||
echo " export SSH_PROD_USER=usuario"
|
||||
echo " export SSH_PROD_PATH=/var/www/avanzato"
|
||||
echo ""
|
||||
|
||||
# Tentar carregar .env.local
|
||||
if [ -f "${PROJECT_DIR}/scripts/.env.local" ]; then
|
||||
echo -e "${BLUE}Carregando scripts/.env.local...${NC}"
|
||||
source "${PROJECT_DIR}/scripts/.env.local"
|
||||
fi
|
||||
|
||||
if [ -z "${SSH_PROD_HOST}" ]; then
|
||||
echo -e "${RED}Configuracao nao encontrada. Abortando.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${RED} ============================================${NC}"
|
||||
echo -e "${RED} ATENCAO: Deploy para PRODUCAO${NC}"
|
||||
echo -e "${RED} ============================================${NC}"
|
||||
echo ""
|
||||
read -p "Tem certeza que deseja deploy para PRODUCAO? (digite 'sim' para confirmar): " confirm
|
||||
if [ "$confirm" != "sim" ]; then
|
||||
echo -e "${YELLOW}Deploy cancelado.${NC}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}[1/4]${NC} Verificando conexao..."
|
||||
if ! ssh -o ConnectTimeout=10 "${SSH_PROD_USER}@${SSH_PROD_HOST}" "echo 'OK'" 2>/dev/null; then
|
||||
echo -e "${RED}Erro: Nao foi possivel conectar ao servidor.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}OK${NC}"
|
||||
|
||||
echo -e "${BLUE}[2/4]${NC} Criando backup..."
|
||||
ssh "${SSH_PROD_USER}@${SSH_PROD_HOST}" "
|
||||
if [ -d '${SSH_PROD_PATH}' ]; then
|
||||
mkdir -p '${SSH_PROD_PATH}/backups'
|
||||
cp -r '${SSH_PROD_PATH}' '${SSH_PROD_PATH}/backups/backup-$(date +%Y%m%d-%H%M%S)' 2>/dev/null || true
|
||||
fi
|
||||
" 2>/dev/null || echo -e "${YELLOW}Backup ignorado.${NC}"
|
||||
|
||||
echo -e "${BLUE}[3/4]${NC} Enviando arquivos..."
|
||||
rsync -avz --delete \
|
||||
--exclude='backups' \
|
||||
"$DIST_DIR/" \
|
||||
"${SSH_PROD_USER}@${SSH_PROD_HOST}:${SSH_PROD_PATH}/"
|
||||
echo -e "${GREEN}OK${NC}"
|
||||
|
||||
echo -e "${BLUE}[4/4]${NC} Finalizando..."
|
||||
ssh "${SSH_PROD_USER}@${SSH_PROD_HOST}" "sudo systemctl reload nginx 2>/dev/null || true"
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}Deploy para PRODUCAO concluido!${NC}"
|
||||
echo -e "Acesse: ${CYAN}https://avanzato.com.br${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Clean
|
||||
cmd_clean() {
|
||||
show_banner
|
||||
echo -e "${YELLOW}Limpando caches...${NC}"
|
||||
rm -rf "${DIST_DIR}"
|
||||
rm -rf "${PROJECT_DIR}/node_modules/.cache"
|
||||
rm -rf "${PROJECT_DIR}/node_modules/.vite"
|
||||
echo -e "${GREEN}OK${NC} - Caches limpos"
|
||||
}
|
||||
|
||||
# Help
|
||||
cmd_help() {
|
||||
echo ""
|
||||
echo -e "${CYAN}Avanzato - Script de Desenvolvimento${NC}"
|
||||
echo ""
|
||||
echo -e "Uso: ${YELLOW}bash scripts/dev.sh [comando]${NC}"
|
||||
echo ""
|
||||
echo -e "${GREEN}Comandos disponiveis:${NC}"
|
||||
echo ""
|
||||
echo " ${YELLOW}start${NC} Inicia servidor dev (http://localhost:5173)"
|
||||
echo " ${YELLOW}build${NC} Build de producao"
|
||||
echo " ${YELLOW}build-hom${NC} Build para homologacao"
|
||||
echo " ${YELLOW}preview${NC} Preview do build local (http://localhost:4173)"
|
||||
echo " ${YELLOW}deploy-hom${NC} Deploy para servidor de homologacao"
|
||||
echo " ${YELLOW}deploy-prod${NC} Deploy para servidor de producao"
|
||||
echo " ${YELLOW}clean${NC} Limpa dist/ e caches"
|
||||
echo " ${YELLOW}help${NC} Mostra esta ajuda"
|
||||
echo ""
|
||||
echo -e "${GREEN}Fluxo de trabalho:${NC}"
|
||||
echo ""
|
||||
echo " 1. Desenvolva: bash scripts/dev.sh start"
|
||||
echo " 2. Build hom: bash scripts/dev.sh build-hom"
|
||||
echo " 3. Deploy hom: bash scripts/dev.sh deploy-hom"
|
||||
echo " 4. Aprove..."
|
||||
echo " 5. Build prod: bash scripts/dev.sh build"
|
||||
echo " 6. Deploy prod: bash scripts/dev.sh deploy-prod"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Dispatcher
|
||||
case "$CMD" in
|
||||
start|dev)
|
||||
cmd_start
|
||||
;;
|
||||
build)
|
||||
cmd_build
|
||||
;;
|
||||
build-hom|build-homolog|build-staging)
|
||||
cmd_build_hom
|
||||
;;
|
||||
preview)
|
||||
cmd_preview
|
||||
;;
|
||||
deploy-hom|deploy-homolog|deploy-staging)
|
||||
cmd_deploy_hom
|
||||
;;
|
||||
deploy-prod|deploy-production)
|
||||
cmd_deploy_prod
|
||||
;;
|
||||
clean)
|
||||
cmd_clean
|
||||
;;
|
||||
help|--help|-h)
|
||||
cmd_help
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Comando desconhecido: ${CMD}${NC}"
|
||||
cmd_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { HashRouter as Router, Routes, Route, useLocation } from 'react-router-dom';
|
||||
import { BrowserRouter as Router, Routes, Route, useLocation } from 'react-router-dom';
|
||||
import { gsap } from 'gsap';
|
||||
import { ScrollTrigger } from 'gsap/ScrollTrigger';
|
||||
import Navigation from './sections/Navigation';
|
||||
|
||||
+6
-9
@@ -11,16 +11,13 @@
|
||||
// Opcao 2: URL da imagem (deixe svgInline vazio e preencha imageUrl)
|
||||
|
||||
export const LOGO = {
|
||||
// Se quiser usar SVG inline, cole o codigo aqui entre as crases
|
||||
// Exemplo: svgInline: `<svg ...>...</svg>`
|
||||
svgInline: `<svg width="40" height="40" viewBox="0 0 100 100">
|
||||
<path d="M50 15 L75 75 H60 L55 60 H45 L40 75 H25 L50 15 Z M48 48 H52 L50 40 L48 48 Z"
|
||||
fill="#cbf400" stroke="#cbf400" stroke-width="4" stroke-linejoin="round" stroke-linecap="round"/>
|
||||
</svg>`,
|
||||
// Opcao 1: SVG inline (deixe vazio se for usar imagem)
|
||||
svgInline: '',
|
||||
|
||||
// Se quiser usar imagem (PNG/JPG), coloque o arquivo em public/assets/
|
||||
// e defina: imageUrl: '/assets/logo.png'
|
||||
imageUrl: '',
|
||||
// Opcao 2: URL da imagem (use quando o logo esta hospedado externamente)
|
||||
// Exemplo: '/assets/logo.png' para arquivo local
|
||||
// Exemplo: 'https://avanzato.com.br/logo.png' para imagem externa
|
||||
imageUrl: 'https://avanzato.com.br/logo.png',
|
||||
|
||||
// Texto ao lado do logo (deixe vazio se nao quiser texto)
|
||||
text: 'avanzato',
|
||||
|
||||
@@ -224,7 +224,7 @@ const Condominios = () => {
|
||||
<div className="hero-animate grid grid-cols-2 md:grid-cols-4 gap-6 mt-16">
|
||||
{[
|
||||
{ valor: '500+', label: 'Condomínios atendidos' },
|
||||
{ valor: '+23', label: 'Anos de experiência' },
|
||||
{ valor: '11', label: 'Anos de experiência' },
|
||||
{ valor: '40%', label: 'Economia média' },
|
||||
{ valor: '24/7', label: 'Monitoramento' },
|
||||
].map((stat, i) => (
|
||||
|
||||
+10
-18
@@ -28,24 +28,14 @@ const Footer = () => {
|
||||
}));
|
||||
|
||||
// Renderiza o logo (SVG inline ou imagem)
|
||||
// const renderLogo = () => {
|
||||
// if (LOGO.imageUrl) {
|
||||
// return <img src={LOGO.imageUrl} alt={COMPANY.name} className="h-10 w-auto" />;
|
||||
// }
|
||||
// return (
|
||||
const renderLogo = () => {
|
||||
return (
|
||||
<img
|
||||
src="/logo.png"
|
||||
alt={COMPANY.name}
|
||||
className="h-10 w-auto"
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
// <div dangerouslySetInnerHTML={{ __html: LOGO.svgInline }} className="flex-shrink-0" />
|
||||
// );
|
||||
// };
|
||||
const renderLogo = () => {
|
||||
if (LOGO.imageUrl) {
|
||||
return <img src={LOGO.imageUrl} alt={COMPANY.name} className="h-10 w-auto" />;
|
||||
}
|
||||
return (
|
||||
<div dangerouslySetInnerHTML={{ __html: LOGO.svgInline }} className="flex-shrink-0" />
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<footer className="bg-[#0e0e0e] text-white relative border-t border-white/5">
|
||||
@@ -59,6 +49,7 @@ const renderLogo = () => {
|
||||
{LOGO.text && (
|
||||
<span className="text-2xl font-bold tracking-tight">
|
||||
{LOGO.text}
|
||||
<span className="text-[#cbf400]">{LOGO.textHighlight}</span>
|
||||
</span>
|
||||
)}
|
||||
</Link>
|
||||
@@ -170,6 +161,7 @@ const renderLogo = () => {
|
||||
<div className="flex flex-col md:flex-row items-center justify-between gap-4">
|
||||
<p className="text-gray-500 text-sm">
|
||||
© {new Date().getFullYear()} {COMPANY.name}. Todos os direitos reservados.
|
||||
<span className="ml-2 text-gray-600 text-xs">v1.0.4</span>
|
||||
</p>
|
||||
|
||||
<div className="flex items-center gap-6">
|
||||
|
||||
@@ -329,7 +329,7 @@ const Testimonials = () => {
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-6 mb-16">
|
||||
{[
|
||||
{ valor: "500+", label: "Clientes atendidos" },
|
||||
{ valor: "+23", label: "Anos de experiência" },
|
||||
{ valor: "11", label: "Anos de experiência" },
|
||||
{ valor: "4.9", label: "Nota média" },
|
||||
{ valor: "98%", label: "Taxa de satisfação" },
|
||||
].map((stat, i) => (
|
||||
|
||||
Reference in New Issue
Block a user