diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..8d4f5415b --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,22 @@ +name: AI Code Reviewer + +on: + pull_request: + types: + - opened + - synchronize +permissions: write-all +jobs: + review: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - name: AI Code Reviewer + uses: your-username/ai-code-reviewer@main + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + OPENAI_API_MODEL: "gpt-4" # Optional: defaults to "gpt-4" + exclude: "**/*.json, **/*.md" # Optional: exclude patterns separated by commas diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml new file mode 100644 index 000000000..46020d47d --- /dev/null +++ b/.github/workflows/pipeline.yml @@ -0,0 +1,73 @@ +name: CI - Lint / Tests / Deploy + +on: [push] + +jobs: + + lint: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 + + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + + tests: + needs: lint + runs-on: ubuntu-20.04 + strategy: + matrix: + python-version: [3.5, 3.6, 3.7, 3.8, 3.9] + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + +# - name: Install dependencies +# run: | +# python -m pip install --upgrade pip +# pip install flake8 pytest +# if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + +# - name: Integrations Test +# run: | +# python test.py + + + deploy: + needs: tests + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + + - name: deploy into heroku + uses: akhileshns/heroku-deploy@v3.12.12 + with: + heroku_api_key: ${{secrets.HEROKU_API_KEY}} + heroku_app_name: ${{secrets.HEROKU_APP_NAME}} + heroku_email: ${{secrets.HEROKU_USER_EMAIL}} \ No newline at end of file diff --git a/AMPLIFY_SETUP.md b/AMPLIFY_SETUP.md new file mode 100644 index 000000000..3872b345a --- /dev/null +++ b/AMPLIFY_SETUP.md @@ -0,0 +1,206 @@ +# Configuração AWS Amplify - Guia Completo + +## Passo 1: Criar Funções Lambda + +### 1.1 Função para Chat (Lambda) +1. Acesse AWS Lambda Console +2. Criar nova função: `secode-chat-api` +3. Runtime: Node.js 18.x +4. Copie o código abaixo na seção "Código das Funções Lambda" +5. Configurar variável de ambiente: `OPENAI_API_KEY` +6. Adicionar layer do OpenAI ou fazer upload com node_modules + +### 1.2 Função para Contato (Lambda) +1. Criar nova função: `secode-contact-api` +2. Runtime: Node.js 18.x +3. Copie o código abaixo na seção "Código das Funções Lambda" + +## Passo 2: Configurar API Gateway + +### 2.1 Criar API REST +1. Acesse API Gateway Console +2. Criar nova "REST API" +3. Nome: `secode-api` + +### 2.2 Configurar recursos +1. Criar recurso `/chat` + - Método POST → Integrar com `secode-chat-api` + - Habilitar CORS +2. Criar recurso `/contact` + - Método POST → Integrar com `secode-contact-api` + - Habilitar CORS + +### 2.3 Deploy da API +1. Deploy para stage "prod" +2. Anote a URL base: `https://xxxxxxxxxx.execute-api.region.amazonaws.com/prod` + +## Passo 3: Obter Chave da OpenAI + +### 3.1 Criar Conta e Obter API Key +1. Acesse https://platform.openai.com +2. Crie uma conta (se não tiver uma) +3. Faça login e vá para "API keys" no menu +4. Clique em "Create new secret key" +5. Dê um nome para a chave (ex: "secode-chatbot") +6. Copie a chave gerada (ela começa com "sk-") +7. **IMPORTANTE:** Guarde essa chave em local seguro, ela não será exibida novamente + +### 3.2 Configurar Chave na Função Lambda +1. No AWS Lambda Console, abra a função `secode-chat-api` +2. Vá na aba "Configuration" → "Environment variables" +3. Clique em "Edit" +4. Adicione nova variável: + - Key: `OPENAI_API_KEY` + - Value: sua chave da OpenAI (sk-...) +5. Salve as alterações + +## Passo 4: Configurar Amplify + +### 4.1 Variáveis de Ambiente no Amplify +No console do Amplify, adicione estas variáveis: +- `VITE_CHAT_API_URL`: `https://sua-api.execute-api.region.amazonaws.com/prod/chat` +- `VITE_CONTACT_API_URL`: `https://sua-api.execute-api.region.amazonaws.com/prod/contact` + +### 4.2 Build Settings +O arquivo `amplify.yml` já está configurado: +- Build command: `npx vite build` +- Output: `dist/public` + +## Código das Funções Lambda + +### Chat Function (secode-chat-api) + +**IMPORTANTE: Configure timeout para 30 segundos** +1. Lambda → Configuration → General configuration → Edit → Timeout: 30 segundos +2. Chamadas para OpenAI podem demorar 5-10 segundos, timeout padrão de 3s causa erro 502 + +```javascript +export const handler = async (event) => { + const headers = { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token", + "Access-Control-Allow-Methods": "GET,POST,OPTIONS", + "Access-Control-Max-Age": "86400" + }; + + if (event.httpMethod === 'OPTIONS') { + return { + statusCode: 200, + headers, + body: JSON.stringify({}) + }; + } + + try { + if (!event.body) { + throw new Error('Request body is missing'); + } + + const { message } = JSON.parse(event.body); + + const response = await fetch('https://api.openai.com/v1/chat/completions', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + model: "gpt-4o", // Use gpt-4o, gpt-4-turbo, ou gpt-4 (NÃO use 4.1) + messages: [{ + role: "system", + content: "Você é o SecodIA, assistente virtual da Secode. A Secode oferece soluções de IA para pequenos empreendedores brasileiros, incluindo presença digital, automação e consultoria tecnológica. Seja prestativo e responda em português." + }, { + role: "user", + content: message + }], + max_tokens: 150, // Reduzido para evitar timeouts + temperature: 0.7 + }) + }); + + const data = await response.json(); + + return { + statusCode: 200, + headers, + body: JSON.stringify({ + response: data.choices[0].message.content + }) + }; + } catch (error) { + return { + statusCode: 500, + headers, + body: JSON.stringify({ + error: "Erro interno do servidor", + details: error.message + }) + }; + } +}; +``` + +### Contact Function (secode-contact-api) +```javascript +exports.handler = async (event) => { + const headers = { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Headers": "Content-Type", + "Access-Control-Allow-Methods": "OPTIONS,POST,GET" + }; + + if (event.httpMethod === 'OPTIONS') { + return { statusCode: 200, headers, body: '' }; + } + + try { + const { name, email, phone, business, message } = JSON.parse(event.body); + + console.log('Contato recebido:', { name, email, phone, business, message }); + + return { + statusCode: 201, + headers, + body: JSON.stringify({ + success: true, + message: 'Contato enviado com sucesso!' + }) + }; + } catch (error) { + return { + statusCode: 500, + headers, + body: JSON.stringify({ + error: "Erro interno do servidor" + }) + }; + } +}; +``` + +## Passo 5: Deploy Final + +### 5.1 Verificar Configurações +Confirme se você configurou: +- ✅ Chave OpenAI na função Lambda `secode-chat-api` +- ✅ URLs das APIs nas variáveis do Amplify +- ✅ CORS habilitado no API Gateway + +### 5.2 Testar o Deploy +1. Faça um novo deploy no Amplify (ou aguarde o automático) +2. Acesse seu site em produção +3. Teste o chatbot - ele deve abrir automaticamente na primeira visita +4. Teste o formulário de contato + +### 5.3 Solução de Problemas +Se o chatbot não funcionar: +- Verifique se a chave OpenAI está correta na função Lambda +- Verifique se as URLs estão corretas no Amplify +- Verifique os logs da função Lambda no CloudWatch + +## Resultado Final +- Site funcionando no Amplify +- Chat com IA usando OpenAI +- Formulário de contato funcional +- URLs configuráveis via variáveis de ambiente +- Documentação completa para manutenção \ No newline at end of file diff --git "a/Como a IA da Secode Transforma Neg\303\263cios" "b/Como a IA da Secode Transforma Neg\303\263cios" new file mode 100644 index 000000000..e69de29bb diff --git a/DEPLOY_GUIDE.md b/DEPLOY_GUIDE.md new file mode 100644 index 000000000..04709e38b --- /dev/null +++ b/DEPLOY_GUIDE.md @@ -0,0 +1,73 @@ +# Guia de Deploy - Secode Website + +## Opção 1: Deploy no Netlify (Recomendado) + +### Passos: +1. **Conecte ao GitHub:** + - Faça push deste código para um repositório GitHub + - Acesse [netlify.com](https://netlify.com) + - Clique em "New site from Git" + - Conecte seu repositório GitHub + +2. **Configurações de Build:** + - Build command: `npm run build` + - Publish directory: `dist` + - Node version: `18` + +3. **Variáveis de Ambiente:** + - Vá em Site settings > Environment variables + - Adicione: `OPENAI_API_KEY` = sua chave da OpenAI + +4. **Deploy:** + - O Netlify fará o deploy automaticamente + - As funções serverless em `netlify/functions/` serão deployadas automaticamente + +## Opção 2: Deploy no AWS Amplify + +### Para funcionar no Amplify, você precisa configurar API Gateway + Lambda: + +1. **Criar funções Lambda:** + - Criar Lambda function `chatApi` usando código em `amplify/backend/function/chatApi/src/index.js` + - Criar Lambda function `contactApi` usando código em `amplify/backend/function/contactApi/src/index.js` + - Configurar variável de ambiente `OPENAI_API_KEY` em ambas as funções + +2. **Configurar API Gateway:** + - Criar API REST no API Gateway + - Criar recursos `/api/chat/generate` (POST) → chatApi Lambda + - Criar recursos `/api/contacts` (POST) → contactApi Lambda + - Habilitar CORS para todos os recursos + +3. **Deploy no Amplify:** + - Build command: `npm run build` + - Output directory: `dist` + - Configurar `OPENAI_API_KEY` nas variáveis de ambiente + +### Detecção Automática: +O código detecta automaticamente se está rodando no Amplify (domínios *.amplifyapp.com) e usa os endpoints corretos. + +### URLs das Funções: +- Chat: `/.netlify/functions/chat` (Netlify) ou sua URL da Lambda (Amplify) +- Contato: `/.netlify/functions/contact` (Netlify) ou sua URL da Lambda (Amplify) + +## Arquivos Criados para Deploy: + +### Para Netlify: +- `netlify/functions/chat.js` - Função do chat com OpenAI +- `netlify/functions/contact.js` - Função do formulário de contato +- `netlify.toml` - Configuração do Netlify + +### Para Amplify: +- `amplify/backend/function/chatApi/` - Função Lambda do chat +- `amplify/backend/function/contactApi/` - Função Lambda do contato +- `amplify.yml` - Configuração do Amplify + +## Funcionalidades: +- ✅ Chat com IA integrado à OpenAI +- ✅ Formulário de contato funcional +- ✅ Site responsivo e profissional +- ✅ Auto-abertura do chat na primeira visita +- ✅ Todas as informações da Secode atualizadas + +## Importante: +- Lembre-se de configurar a variável `OPENAI_API_KEY` na plataforma escolhida +- O chat só funcionará após a configuração da chave da OpenAI \ No newline at end of file diff --git a/PRODUCTION_SETUP.md b/PRODUCTION_SETUP.md new file mode 100644 index 000000000..d92af3d3e --- /dev/null +++ b/PRODUCTION_SETUP.md @@ -0,0 +1,168 @@ +# Guia de Configuração para Produção - Secode + +## Status Atual +✅ **Sistema de Pagamentos Completo** +- Cartão de crédito: Funcionando (Asaas API) +- PIX com QR Code: Funcionando (geração real de QR codes) +- Interface responsiva e otimizada +- Sistema de fallback para sandbox + +⚠️ **Situação Atual** +- Ambiente: SANDBOX (chave de teste) +- QR codes PIX: Inválidos para pagamento real (esperado em sandbox) +- Dados de teste removidos da interface +- Sistema pronto para receber chave de produção + +## Configuração do Asaas para Produção + +### 1. Migração da Conta Sandbox para Produção + +**Atualmente usando:** +- API Sandbox: `https://api-sandbox.asaas.com` +- Chave de teste: `$aact_YTU5YTE0M2...` (sandbox) + +**Para produção, você precisa:** + +1. **Solicitar aprovação da conta no Asaas** + - Acesse: https://asaas.com + - Complete o processo de verificação KYC + - Aguarde aprovação (1-3 dias úteis) + +2. **Obter chaves de produção** + - API Key de produção (formato: `$aact_prod_...`) + - Webhook URL para confirmações de pagamento + +3. **Ativar PIX na conta** + - PIX requer conta aprovada + - Configurar chave PIX da empresa + - Aguardar ativação (1-2 dias úteis) + +### 2. Variáveis de Ambiente para Produção + +```bash +# Configuração obrigatória +DATABASE_URL=sua_url_postgresql_producao +ASAAS_API_KEY=sua_chave_asaas_producao +ASAAS_ENVIRONMENT=production + +# Configuração AWS (para chatbot) +AWS_ACCESS_KEY_ID=sua_access_key +AWS_SECRET_ACCESS_KEY=sua_secret_key +AWS_REGION=us-east-1 + +# Opcional (fallback do chat) +OPENAI_API_KEY=sua_chave_openai +``` + +### 3. Alterações de Código Necessárias + +#### server/index.ts +```javascript +// Alterar de: +const ASAAS_ENVIRONMENT = 'sandbox'; + +// Para: +const ASAAS_ENVIRONMENT = process.env.ASAAS_ENVIRONMENT || 'production'; +``` + +#### Base URL da API +```javascript +// Alterar de: +const ASAAS_BASE_URL = 'https://api-sandbox.asaas.com'; + +// Para: +const ASAAS_BASE_URL = ASAAS_ENVIRONMENT === 'production' + ? 'https://api.asaas.com' + : 'https://api-sandbox.asaas.com'; +``` + +## Configuração de Domínio e SSL + +### 1. Domínio Personalizado +- Configurar DNS para apontar para o servidor de produção +- Certificado SSL automático (Cloudflare/Let's Encrypt) + +### 2. Webhook do Asaas +- URL: `https://seudominio.com/api/webhooks/asaas` +- Eventos: `PAYMENT_RECEIVED`, `PAYMENT_CONFIRMED` + +## Funcionalidades Implementadas + +### ✅ Sistema de Pagamentos +- **Cartão de Crédito**: Processamento direto via Asaas +- **PIX**: QR Code real + código copiável +- **Validação**: CPF/CNPJ, endereço, dados do cartão +- **Segurança**: Validação server-side completa + +### ✅ Interface de Checkout +- Design responsivo e profissional +- Formulário único simplificado +- Feedback visual em tempo real +- Tratamento de erros robusto + +### ✅ Gestão de Leads +- Dashboard administrativo +- Captura via formulários e WhatsApp +- Sistema de status e acompanhamento + +### ✅ Chat AI +- AWS Bedrock + fallback OpenAI +- Contexto empresarial personalizado +- Integração com WhatsApp + +## Checklist Final para Deploy + +### Antes do Deploy +- [ ] Conta Asaas aprovada e PIX ativado +- [ ] Chaves de produção configuradas +- [ ] Domínio e SSL configurados +- [ ] Webhook do Asaas testado +- [ ] Database de produção criado + +### Após Deploy +- [ ] Testar cartão com dados reais +- [ ] Testar PIX com conta bancária real +- [ ] Verificar recebimento de webhooks +- [ ] Configurar monitoramento de erros +- [ ] Backup automático do database + +## Suporte Técnico + +### Asaas +- Documentação: https://docs.asaas.com +- Suporte: suporte@asaas.com +- WhatsApp: (16) 3003-4031 + +### Sistema Secode +- Logs de erro: `/var/log/secode/` +- Monitoramento: Dashboard admin +- Backup: Automático via Postgres + +## Custos Estimados (Mensal) + +### Asaas (por transação) +- PIX: R$ 0,40 por transação +- Cartão de crédito: 3,49% + R$ 0,40 +- Boleto: R$ 2,49 por boleto (removido) + +### Infraestrutura +- Servidor: R$ 50-200/mês +- Database: R$ 30-100/mês +- Domain/SSL: R$ 50/ano +- AWS Bedrock: ~R$ 20/mês + +**Total estimado: R$ 100-320/mês** + +--- + +## Próximos Passos + +1. **Imediato**: Solicitar aprovação da conta Asaas +2. **1-3 dias**: Aguardar verificação KYC +3. **Aprovação**: Configurar chaves de produção +4. **Deploy**: Migrar para ambiente de produção +5. **Teste**: Validar pagamentos reais +6. **Go Live**: Ativar para clientes + +--- +*Documento atualizado em: 04/07/2025* \ No newline at end of file diff --git a/README.md b/README.md index 1889077c8..3551a2dd5 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# Trilha DevOps da 4Linux +# Trilha DevOps Alexandre Monteiro ## Aplicação criada para exemplificar o Ciclo de uma PipeLine DevOps -Para maiores informações acesse o [Site da 4Linux](https://www.4linux.com.br/cursos/devops) +Para maiores informações acesse o [Site](https://www.alexandremonteiro.com.br/links) diff --git a/SUPABASE_SETUP.md b/SUPABASE_SETUP.md new file mode 100644 index 000000000..5389b7e7b --- /dev/null +++ b/SUPABASE_SETUP.md @@ -0,0 +1,81 @@ +# Configuração do Supabase - Guia Completo + +## 1. Acesso ao Painel do Supabase + +1. Acesse: https://supabase.com/dashboard +2. Faça login na sua conta +3. Selecione o projeto: **txtqnsldwdjrhkgewock** + +## 2. Criar as Tabelas + +### Passo 1: Abrir o SQL Editor +1. No painel do Supabase, clique em **SQL Editor** (no menu lateral) +2. Clique em **New Query** para criar uma nova consulta + +### Passo 2: Executar o Script SQL +1. Copie todo o conteúdo do arquivo `supabase-schema.sql` +2. Cole no editor SQL +3. Clique em **Run** para executar + +### Passo 3: Verificar as Tabelas +1. Vá em **Table Editor** (no menu lateral) +2. Você deve ver 4 tabelas criadas: + - `users` + - `contacts` + - `chat_messages` + - `whatsapp_leads` + +## 3. Configurar o Sistema para Usar o Supabase + +### Opção A: Usar o Supabase como Banco Principal +```bash +# No terminal do Replit, execute: +# Isso mudará o sistema para usar o Supabase +``` + +### Opção B: Manter Neon como Principal (Recomendado) +O sistema atual está funcionando perfeitamente com Neon. O Supabase fica como backup. + +## 4. Testar a Conexão + +Após criar as tabelas, teste a conexão: + +```bash +curl -H "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InR4dHFuc2xkd2RqcmhrZ2V3b2NrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTIwNjU2MTcsImV4cCI6MjA2NzY0MTYxN30.5lu6iEBe8vVVtCroP76fR-X2e61QQRZH1-u93835t9A" \ + -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InR4dHFuc2xkd2RqcmhrZ2V3b2NrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTIwNjU2MTcsImV4cCI6MjA2NzY0MTYxN30.5lu6iEBe8vVVtCroP76fR-X2e61QQRZH1-u93835t9A" \ + "https://txtqnsldwdjrhkgewock.supabase.co/rest/v1/contacts?select=*" +``` + +## 5. Migrar para o Supabase (Opcional) + +Se quiser migrar do Neon para o Supabase: + +1. Execute o script SQL no Supabase +2. Modifique o arquivo `server/storage.ts`: + ```typescript + import { SupabaseStorage } from "./supabase-storage"; + export const storage = new SupabaseStorage(); + ``` +3. Reinicie o servidor + +## 6. Vantagens do Supabase + +- ✅ Interface visual amigável +- ✅ Backup automático +- ✅ Escalabilidade +- ✅ API REST automática +- ✅ Real-time subscriptions +- ✅ Autenticação integrada + +## 7. Status Atual + +**Sistema atual:** Funcionando com Neon PostgreSQL +**Supabase:** Configurado e pronto para uso +**Recomendação:** Manter Neon como principal, Supabase como backup + +## Instruções Rápidas + +Para migrar agora: +1. Execute o SQL no painel do Supabase +2. Me avise quando terminar +3. Eu faço a migração automática do código \ No newline at end of file diff --git a/SWITCH_TO_PRODUCTION.md b/SWITCH_TO_PRODUCTION.md new file mode 100644 index 000000000..d7d1123fd --- /dev/null +++ b/SWITCH_TO_PRODUCTION.md @@ -0,0 +1,52 @@ +# Como Ativar Modo Produção + +## Situação Atual +- ✅ Sistema funcionando em **SANDBOX** +- ✅ QR codes PIX sendo gerados (inválidos para pagamento real - normal em sandbox) +- ✅ Dados de teste removidos da interface +- ✅ Sistema pronto para produção + +## Para Ativar Produção + +### 1. Configure a Variável de Ambiente + +Adicione no seu ambiente de produção: + +```bash +ASAAS_ENVIRONMENT=production +ASAAS_API_KEY=sua_chave_de_producao_real +``` + +### 2. Verificação + +Quando configurado corretamente, você verá: + +``` +🚀 Asaas API Mode: PRODUCTION +🔗 Asaas API Base: https://api.asaas.com +💳 Using REAL payment processing +``` + +### 3. Resultado + +Com a conta Asaas aprovada e PIX ativado: +- QR codes PIX serão válidos para pagamento real +- Cartões processarão cobranças reais +- Sistema totalmente funcional + +## Pré-requisitos + +Antes de ativar produção, você precisa: + +1. **Conta Asaas Aprovada** (KYC completo) +2. **PIX Ativado** na conta Asaas +3. **Chave de Produção** obtida no painel Asaas + +## Status dos QR Codes + +- **Sandbox**: QR codes inválidos (comportamento esperado) +- **Produção**: QR codes válidos para pagamento real + +--- + +**O sistema está pronto!** Só precisa da configuração de produção do Asaas. \ No newline at end of file diff --git a/amplify.yml b/amplify.yml new file mode 100644 index 000000000..454321cca --- /dev/null +++ b/amplify.yml @@ -0,0 +1,17 @@ +version: 1 +frontend: + phases: + preBuild: + commands: + - npm ci + - ls -la client/src/pages/ + build: + commands: + - npm run build + artifacts: + baseDirectory: dist/public + files: + - '**/*' + cache: + paths: + - node_modules/**/* \ No newline at end of file diff --git a/attached_assets/Logo_Principal_RGB_300dpi.jpg_1750515600412.jpg b/attached_assets/Logo_Principal_RGB_300dpi.jpg_1750515600412.jpg new file mode 100644 index 000000000..ae91ffb94 Binary files /dev/null and b/attached_assets/Logo_Principal_RGB_300dpi.jpg_1750515600412.jpg differ diff --git a/attached_assets/Logo_Principal_RGB_300dpi.png_1750515638960.png b/attached_assets/Logo_Principal_RGB_300dpi.png_1750515638960.png new file mode 100644 index 000000000..9273edff4 Binary files /dev/null and b/attached_assets/Logo_Principal_RGB_300dpi.png_1750515638960.png differ diff --git a/attached_assets/Logo_Secode_roxo_horiz_400px_1750608624303.png b/attached_assets/Logo_Secode_roxo_horiz_400px_1750608624303.png new file mode 100644 index 000000000..fb05fd840 Binary files /dev/null and b/attached_assets/Logo_Secode_roxo_horiz_400px_1750608624303.png differ diff --git "a/attached_assets/Logo_\303\215cone Principal_RGB_300dpi.png_1750515214341.png" "b/attached_assets/Logo_\303\215cone Principal_RGB_300dpi.png_1750515214341.png" new file mode 100644 index 000000000..688acc0af Binary files /dev/null and "b/attached_assets/Logo_\303\215cone Principal_RGB_300dpi.png_1750515214341.png" differ diff --git "a/attached_assets/Logo_\303\215cone Principal_RGB_300dpi.png_1750515811083.png" "b/attached_assets/Logo_\303\215cone Principal_RGB_300dpi.png_1750515811083.png" new file mode 100644 index 000000000..688acc0af Binary files /dev/null and "b/attached_assets/Logo_\303\215cone Principal_RGB_300dpi.png_1750515811083.png" differ diff --git a/attached_assets/Pasted-0-2025-06-01T01-51-14-098Z-INFO-Cloning-repository-git-github-com-alemonteiroficial-secode--1748742811873.txt b/attached_assets/Pasted-0-2025-06-01T01-51-14-098Z-INFO-Cloning-repository-git-github-com-alemonteiroficial-secode--1748742811873.txt new file mode 100644 index 000000000..015f2e38e --- /dev/null +++ b/attached_assets/Pasted-0-2025-06-01T01-51-14-098Z-INFO-Cloning-repository-git-github-com-alemonteiroficial-secode--1748742811873.txt @@ -0,0 +1,159 @@ +0 + +2025-06-01T01:51:14.098Z [INFO]: # Cloning repository: git@github.com:alemonteiroficial/secode-ia-solutions-web.git + +1 + +2025-06-01T01:51:14.925Z [INFO]: + +2 + +2025-06-01T01:51:14.926Z [INFO]: Cloning into 'secode-ia-solutions-web'... + +3 + +2025-06-01T01:51:14.926Z [INFO]: # Switching to commit: b15fdf3b05d7150a545c989e52c65f1050a55f75 + +4 + +2025-06-01T01:51:14.942Z [INFO]: Note: switching to 'b15fdf3b05d7150a545c989e52c65f1050a55f75'. + +5 + + You are in 'detached HEAD' state. You can look around, make experimental + +6 + + changes and commit them, and you can discard any commits you make in this + +7 + + state without impacting any branches by switching back to a branch. + +8 + + If you want to create a new branch to retain commits you create, you may + +9 + + do so (now or later) by using -c with the switch command. Example: + +10 + + git switch -c + +11 + + Or undo this operation with: + +12 + + git switch - + +13 + + Turn off this advice by setting config variable advice.detachedHead to false + +14 + + HEAD is now at b15fdf3 Add files via upload + +15 + +2025-06-01T01:51:14.979Z [INFO]: Successfully cleaned up Git credentials + +16 + +2025-06-01T01:51:14.979Z [INFO]: # Checking for Git submodules at: /codebuild/output/src920224933/src/secode-ia-solutions-web/.gitmodules + +17 + +2025-06-01T01:51:14.986Z [INFO]: # Retrieving environment cache... + +18 + +2025-06-01T01:51:15.062Z [INFO]: # Retrieved environment cache + +19 + +2025-06-01T01:51:15.062Z [INFO]: ---- Setting Up SSM Secrets ---- + +20 + +2025-06-01T01:51:15.062Z [INFO]: SSM params {"Path":"/amplify/dy4132nx25vuo/main/","WithDecryption":true} + +21 + +2025-06-01T01:51:15.104Z [WARNING]: !Failed to set up process.env.secrets + +22 + +2025-06-01T01:51:15.748Z [INFO]: # No package override configuration found. + +23 + +2025-06-01T01:51:15.752Z [INFO]: # Retrieving cache... + +24 + +2025-06-01T01:51:19.975Z [INFO]: # Extracting cache... + +25 + +2025-06-01T01:51:26.017Z [INFO]: # Extraction completed + +26 + +2025-06-01T01:51:26.135Z [INFO]: # Retrieved cache + +27 + +2025-06-01T01:51:45.628Z [INFO]: ## Starting Backend Build + +28 + + # Starting phase: build + +29 + +2025-06-01T01:51:47.624Z [INFO]: ⚠️ For new projects, we recommend starting with AWS Amplify Gen 2, our new code-first developer experience. Get started at https://docs.amplify.aws/react/start/quickstart/ + +30 + +2025-06-01T01:51:47.624Z [INFO]: Note: It is recommended to run this command from the root of your app directory + +31 + +2025-06-01T01:51:47.624Z [INFO]: The following configuration will be applied: + +32 + +2025-06-01T01:51:47.624Z [INFO]: Project information + +33 + + | Name: secodeiasolutionsweb + +34 + + | Environment: main + +35 + +2025-06-01T01:51:47.625Z [INFO]: | Default editor: Visual Studio Code + +36 + +2025-06-01T01:51:47.755Z [INFO]: | App type: javascript + +37 + +2025-06-01T01:51:47.756Z [INFO]: | Javascript framework: react + +38 + +2025-06-01T01:51:47.756Z [INFO]: | Source Directory Path: src + +39 + + | Distribution Directory Path: build \ No newline at end of file diff --git a/attached_assets/Pasted-0-2025-06-01T11-06-50-368Z-INFO-Cloning-repository-git-github-com-alemonteiroficial-secode--1748776508992.txt b/attached_assets/Pasted-0-2025-06-01T11-06-50-368Z-INFO-Cloning-repository-git-github-com-alemonteiroficial-secode--1748776508992.txt new file mode 100644 index 000000000..ad43f358a --- /dev/null +++ b/attached_assets/Pasted-0-2025-06-01T11-06-50-368Z-INFO-Cloning-repository-git-github-com-alemonteiroficial-secode--1748776508992.txt @@ -0,0 +1,159 @@ +0 + +2025-06-01T11:06:50.368Z [INFO]: # Cloning repository: git@github.com:alemonteiroficial/secode-ia-solutions-web.git + +1 + +2025-06-01T11:06:51.246Z [INFO]: + +2 + +2025-06-01T11:06:51.246Z [INFO]: Cloning into 'secode-ia-solutions-web'... + +3 + +2025-06-01T11:06:51.247Z [INFO]: # Switching to commit: 3bb1b702510e3737dac363e0913af64f723d4ed4 + +4 + +2025-06-01T11:06:51.263Z [INFO]: Note: switching to '3bb1b702510e3737dac363e0913af64f723d4ed4'. + +5 + + You are in 'detached HEAD' state. You can look around, make experimental + +6 + + changes and commit them, and you can discard any commits you make in this + +7 + + state without impacting any branches by switching back to a branch. + +8 + + If you want to create a new branch to retain commits you create, you may + +9 + + do so (now or later) by using -c with the switch command. Example: + +10 + + git switch -c + +11 + + Or undo this operation with: + +12 + + git switch - + +13 + + Turn off this advice by setting config variable advice.detachedHead to false + +14 + + HEAD is now at 3bb1b70 Adicionando pacotes com a configuração do Lambda + +15 + +2025-06-01T11:06:51.303Z [INFO]: Successfully cleaned up Git credentials + +16 + +2025-06-01T11:06:51.304Z [INFO]: # Checking for Git submodules at: /codebuild/output/src3459097884/src/secode-ia-solutions-web/.gitmodules + +17 + +2025-06-01T11:06:51.311Z [INFO]: # Retrieving environment cache... + +18 + +2025-06-01T11:06:51.383Z [INFO]: # Retrieved environment cache + +19 + +2025-06-01T11:06:51.383Z [INFO]: ---- Setting Up SSM Secrets ---- + +20 + +2025-06-01T11:06:51.383Z [INFO]: SSM params {"Path":"/amplify/dy4132nx25vuo/main/","WithDecryption":true} + +21 + +2025-06-01T11:06:51.433Z [WARNING]: !Failed to set up process.env.secrets + +22 + +2025-06-01T11:06:52.050Z [INFO]: # No package override configuration found. + +23 + +2025-06-01T11:06:52.054Z [INFO]: # Retrieving cache... + +24 + +2025-06-01T11:06:56.620Z [INFO]: # Extracting cache... + +25 + +2025-06-01T11:07:03.346Z [INFO]: # Extraction completed + +26 + +2025-06-01T11:07:03.500Z [INFO]: # Retrieved cache + +27 + +2025-06-01T11:07:07.813Z [INFO]: ## Starting Backend Build + +28 + + ## Checking for associated backend environment... + +29 + + ## No backend environment association found, continuing... + +30 + + ## Completed Backend Build + +31 + +2025-06-01T11:07:07.820Z [INFO]: ## Starting Frontend Build + +32 + + # Starting phase: preBuild + +33 + + # Executing command: npm ci + +34 + +2025-06-01T11:07:25.900Z [WARNING]: npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + +35 + +2025-06-01T11:07:26.025Z [WARNING]: npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported + +36 + +2025-06-01T11:07:26.151Z [WARNING]: npm warn deprecated @esbuild-kit/esm-loader@2.6.5: Merged into tsx: https://tsx.is + +37 + +2025-06-01T11:07:26.161Z [WARNING]: npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported + +38 + +2025-06-01T11:07:26.191Z [WARNING]: npm warn deprecated @esbuild-kit/core-utils@3.3.2: Merged into tsx: https://tsx.is + +39 + +2025-06-01T11:07:41.676Z [INFO]: added 515 packages, and audited 516 packages in 30s \ No newline at end of file diff --git a/attached_assets/Pasted-Compreendido-uma-excelente-pr-tica-para-controle-de-vers-o-e-cad-ncia-de-atualiza-o-Vamos-renom-1749386053967.txt b/attached_assets/Pasted-Compreendido-uma-excelente-pr-tica-para-controle-de-vers-o-e-cad-ncia-de-atualiza-o-Vamos-renom-1749386053967.txt new file mode 100644 index 000000000..514fe1f47 --- /dev/null +++ b/attached_assets/Pasted-Compreendido-uma-excelente-pr-tica-para-controle-de-vers-o-e-cad-ncia-de-atualiza-o-Vamos-renom-1749386053967.txt @@ -0,0 +1,103 @@ +Compreendido! É uma excelente prática para controle de versão e cadência de atualização. Vamos renomear o prompt. + +Prompt V1 para Replit: Site Secode (Foco Total em IA) +Crie uma nova versão do site da Secode no Replit. O site deve ser um single-page application (SPA) na página principal (index.html) com seções âncora, e uma página separada para "Quem Somos". A identidade visual (cores, fontes, estilo geral) deve ser mantida e consistente com a versão anterior. + +O objetivo principal é posicionar a Secode como especialista em IA, destacar seus produtos (começando pelo "Digitalize Fácil") e serviços, e garantir que o site seja altamente compreensível e localizável por agentes de IA (GEO - Generative Engineer Optimization), além de ser intuitivo para o usuário humano. + +1. Estrutura de Páginas e Conteúdo: +1.1. Página Principal (index.html): Generalista sobre IA +Esta página será a porta de entrada para o universo da IA na Secode, com um foco amplo e estratégico. + +Cabeçalho (Header): +Logotipo da Secode: Placeholder de imagem (Logo Secode). +Menu de Navegação: Links âncora para as seções da página principal (#home, #nossa-visao-ia, #produtos, #contato) e um link direto para /quem-somos.html. +Botão CTA: "Descubra Nossas Soluções AI", estilizado para ser proeminente e levar para a seção #produtos. +Seção Hero (Banner Principal - #home): +Título Impactante: "Revolucione Seu Negócio com a Inteligência Artificial da Secode." +Subtítulo: "Transformamos desafios em oportunidades com soluções de IA intuitivas e eficazes." +CTA Primário: Botão grande e visível: "Explore Nossos Produtos AI". +Elemento Visual: Ilustração abstrata e moderna que represente a convergência de tecnologia, dados e automação impulsionada por IA (ex: nós interconectados, cérebros digitais, dados fluindo). Mantenha as cores da identidade da Secode. +Seção "Nossa Visão em IA" (#nossa-visao-ia): +Título: "Como a IA da Secode Transforma Negócios." +Descrição: Explicação concisa e acessível sobre o que é IA aplicada a negócios e por que ela é indispensável hoje. +Pilares da Atuação da Secode em IA (com ícones Font Awesome ou SVGs simples): +Automação Inteligente: "Otimize processos e liberte sua equipe para o estratégico." +Análise de Dados: "Transforme dados brutos em insights acionáveis para decisões melhores." +Presença Digital Dinâmica: "Crie canais digitais inteligentes que engajam e convertem." +Otimização de Experiência: "Personalize a interação com seus clientes em cada ponto de contato." +Elemento Visual: Gráfico ou ilustração que represente o impacto positivo da IA em um negócio. +Seção "Nossos Produtos AI" (#produtos): +Título: "Soluções de IA Desenvolvidas Para Você." +Introdução: Breve parágrafo sobre como os produtos da Secode são projetados para resolver problemas específicos de negócios com o poder da IA. +Cards de Produtos: +Produto 1: "Digitalize Fácil: Mini-Site + Atendimento AI + Agendamento" +Título do Card: "Digitalize Fácil: Sua Presença Online Completa com IA." +Breve Descrição: "Tenha um mini-site profissional, atendimento 24/7 com IA personalizada e agendamento inteligente, tudo em uma solução intuitiva para pequenos empreendedores." +Ícone/Ilustração: Pequena imagem que remeta a um site/celular com chatbot. +Botão CTA: "Saiba Mais e Experimente!" (levará para a seção detalhada desse produto na própria página de produtos ou para uma nova página específica). +Placeholder para Outros Produtos Futuros: Estrutura para 2-3 cards adicionais (ex: "Gestão Inteligente com IA", "Marketing Digital AI", etc.). +Seção "Depoimentos" (Opcional): +Título: "O que Nossos Clientes Dizem." +Espaço para 2-3 depoimentos curtos (placeholders). +Seção "Pronto para Inovar?" (#contato): +Título: "Converse com Nossos Especialistas em IA." +CTA Final: Botão proeminente: "Agende uma Demonstração Gratuita" ou "Fale Conosco". +Formulário de Contato Básico (Nome, E-mail, Mensagem). +Informações de Contato Adicionais (e-mail, telefone da Secode - placeholders). +Rodapé (Footer): +Manter Existente: Esta funcionalidade não precisa de alterações. +1.2. Página "Produtos" (Seção Ancorada na index.html): +O conteúdo do "Digitalize Fácil" será uma seção ancorada (id="digitalize-facil") na própria index.html, logo após a seção #produtos. O botão "Saiba Mais" do card do produto apontará para ela. +Título: "Digitalize Fácil: Detalhes da Solução." +Conteúdo Detalhado: +Reutilize e adapte as seções da antiga index.html: "Nosso MVP", "Benefícios para Você, Empreendedor", "Para Quem é Isso?". +Ajuste a linguagem para se referir ao "Digitalize Fácil" como um produto específico. +CTAs específicas para o produto: "Experimente Grátis o Digitalize Fácil", "Quero Meu Mini-Site com IA!". +1.3. Página "Quem Somos" (quem-somos.html): +Título Principal: "Secode: Inovação e Expertise em IA e Tecnologia." +Conteúdo: Missão, Visão, Valores da Secode. Breve história. Foco na paixão por tecnologia e transformação de negócios através da IA e soluções de código. +CTA: "Junte-se a Nós" (se houver vagas) ou "Converse com a Secode". +2. Popup de Chat com IA (SecodIA Assistente): +Manter Existente: Esta funcionalidade não precisa de alterações. +3. Estilo e Design (Manutenção da Identidade): +Consistência Visual: Crucial: Mantenha a paleta de cores, tipografia, estilo de ícones (Font Awesome ou SVGs simples), espaçamento e design geral da Secode já estabelecidos. Se a identidade anterior usava roxo e preto, continue com isso. O fundo deve ser sempre uma cor clara. +Moderno e Limpo: Design minimalista que enfatize a facilidade de uso e a tecnologia. +Responsividade: Essencial para funcionar perfeitamente em desktops, tablets e celulares, prevenindo scroll horizontal. +Elementos Gráficos: Utilize ilustrações e ícones que complementem a estética da Secode. +Linguagem: Clara, direta, empática. Fale a "língua" do empreendedor e do profissional de TI, sem jargões desnecessários, mas com autoridade. +4. Otimização para Agentes de IA (GEO - Generative Engineer Optimization): +Este é um requisito CRÍTICO para todas as páginas e o conteúdo. + +HTML Semântico Rigoroso: +Use
,