Skip to content

Repository files navigation

🎭 FaceSwap AI - Aplicação Web de Troca de Rostos

Uma aplicação web moderna e intuitiva para realizar troca de rostos (face-swap) utilizando inteligência artificial. Com interface futurista em estética cyberpunk, a aplicação oferece uma experiência imersiva e de fácil uso.

✨ Características Principais

  • Interface Cyberpunk: Design moderno com estética neon rosa e ciano em fundo preto profundo
  • Upload Duplo: Carregue duas imagens (origem e destino) com preview em tempo real
  • Processamento em Nuvem: Utiliza a API do Replicate para processamento robusto
  • Feedback Visual: Indicadores de progresso e status durante o processamento
  • Download de Resultados: Baixe a imagem processada em alta qualidade
  • Autenticação Segura: Integração com OAuth Manus para segurança
  • Responsivo: Funciona perfeitamente em desktop, tablet e mobile
  • Em Português: Interface completamente em português brasileiro

🚀 Início Rápido

Pré-requisitos

  • Node.js 18+ e pnpm
  • Conta no Replicate com API token
  • Conta Manus para autenticação (opcional para desenvolvimento local)

Instalação

  1. Clone o repositório
git clone https://github.com/evybandeca/FaceSwap-AI.git
cd FaceSwap-AI
  1. Instale as dependências
pnpm install
  1. Configure as variáveis de ambiente

Crie um arquivo .env.local na raiz do projeto com as seguintes variáveis:

# Banco de Dados
DATABASE_URL=mysql://user:password@localhost:3306/faceswap_ai

# Autenticação
JWT_SECRET=sua_chave_secreta_aqui

# OAuth Manus
VITE_APP_ID=seu_app_id_aqui
OAUTH_SERVER_URL=https://api.manus.im
VITE_OAUTH_PORTAL_URL=https://manus.im

# Replicate API (OBRIGATÓRIO)
# Obtenha em: https://replicate.com/account/api-tokens
REPLICATE_API_TOKEN=r8_sua_chave_aqui

# Manus APIs (Forge)
BUILT_IN_FORGE_API_URL=https://api.manus.im
BUILT_IN_FORGE_API_KEY=sua_chave_forge_aqui
VITE_FRONTEND_FORGE_API_KEY=sua_chave_frontend_aqui
VITE_FRONTEND_FORGE_API_URL=https://api.manus.im

# Informações do Proprietário
OWNER_OPEN_ID=seu_open_id_aqui
OWNER_NAME=Seu Nome

# Ambiente
NODE_ENV=development

Configuração do Replicate API Token

O token mais importante é o REPLICATE_API_TOKEN. Siga estes passos:

  1. Acesse https://replicate.com/account/api-tokens
  2. Crie uma nova conta ou faça login
  3. Copie seu token de API (começa com r8_)
  4. Cole no arquivo .env.local como REPLICATE_API_TOKEN=r8_seu_token

🎮 Como Usar

Desenvolvimento Local

  1. Inicie o servidor de desenvolvimento
pnpm dev
  1. Acesse a aplicação

Abra http://localhost:3000 no seu navegador

  1. Faça login com sua conta Manus

  2. Carregue as imagens:

    • Origem: Foto com o rosto que será transferido
    • Destino: Foto que receberá o rosto
  3. Clique em "Iniciar Face-Swap" e aguarde o processamento

  4. Baixe o resultado quando estiver pronto

Build para Produção

pnpm build
pnpm start

📋 Dicas para Melhores Resultados

Para obter os melhores resultados ao usar a aplicação:

  • Iluminação Similar: Use fotos com iluminação parecida
  • Qualidade das Imagens: Prefira imagens de alta qualidade e bem definidas
  • Rostos Visíveis: Certifique-se de que os rostos estão claramente visíveis
  • Ângulos Similares: Rostos em ângulos e direções de olhar similares funcionam melhor
  • Tamanho das Imagens: Máximo 10MB por imagem
  • Evite Obstruções: Evite óculos, chapéus ou outras obstruções que cubram o rosto

🏗️ Arquitetura

Frontend

  • React 19: Framework UI moderno
  • Tailwind CSS 4: Estilização com utilitários
  • tRPC: Comunicação type-safe com o backend
  • shadcn/ui: Componentes UI reutilizáveis

Backend

  • Node.js/Express: Servidor web
  • tRPC: API RPC type-safe
  • Drizzle ORM: Gerenciamento de banco de dados
  • Replicate API: Processamento de face-swap

Banco de Dados

  • MySQL/TiDB: Armazenamento de dados de usuários e histórico de face-swaps

📁 Estrutura do Projeto

FaceSwap-AI/
├── client/                    # Frontend React
│   ├── src/
│   │   ├── pages/            # Páginas da aplicação
│   │   ├── components/       # Componentes reutilizáveis
│   │   ├── lib/              # Utilitários e configurações
│   │   ├── App.tsx           # Componente raiz
│   │   └── index.css         # Estilos globais (tema cyberpunk)
│   └── public/               # Arquivos estáticos
├── server/                    # Backend Node.js
│   ├── routers.ts            # Procedimentos tRPC
│   ├── db.ts                 # Funções de banco de dados
│   ├── replicate.ts          # Integração com Replicate API
│   ├── storage.ts            # Gerenciamento de armazenamento
│   └── _core/                # Configurações internas
├── drizzle/                   # Migrações e schema do banco
├── shared/                    # Código compartilhado
└── package.json              # Dependências do projeto

🔧 Desenvolvimento

Adicionar Novas Funcionalidades

  1. Atualizar o schema do banco em drizzle/schema.ts
  2. Gerar migrations: pnpm drizzle-kit generate
  3. Aplicar migrations via dashboard ou SQL
  4. Adicionar procedimentos tRPC em server/routers.ts
  5. Criar componentes UI em client/src/pages/ ou client/src/components/
  6. Escrever testes em server/*.test.ts

Executar Testes

pnpm test

Verificar Tipos TypeScript

pnpm check

Formatar Código

pnpm format

🎨 Customização de Estilo

A aplicação utiliza um tema cyberpunk customizado. Para modificar as cores:

  1. Edite as variáveis CSS em client/src/index.css
  2. Use as cores neon predefinidas:
    • --neon-pink: Rosa neon (padrão)
    • --neon-cyan: Ciano elétrico
    • --neon-purple: Roxo neon

📦 Deployment

A aplicação está pronta para deploy em plataformas como:

  • Manus: Deploy nativo com suporte completo
  • Vercel: Deployment automático
  • Railway: Hospedagem com banco de dados
  • Render: Hospedagem simples

Deploy no Manus

  1. Faça push do código para o GitHub
  2. Conecte o repositório no dashboard Manus
  3. Configure as variáveis de ambiente
  4. Deploy automático em cada push

🐛 Troubleshooting

"Erro ao processar face-swap"

  • Verifique se o REPLICATE_API_TOKEN está configurado corretamente
  • Certifique-se de que as imagens estão em formato válido (JPG, PNG)
  • Verifique se as imagens não excedem 10MB

"Não autorizado"

  • Faça login novamente
  • Limpe os cookies do navegador
  • Verifique se o OAUTH_SERVER_URL está correto

"Erro de conexão com banco de dados"

  • Verifique se o DATABASE_URL está correto
  • Certifique-se de que o banco de dados está rodando
  • Verifique as credenciais de acesso

📝 Licença

Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.

🤝 Contribuições

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📧 Suporte

Para suporte, abra uma issue no GitHub ou entre em contato através do email de suporte.

🙏 Agradecimentos


Desenvolvido com ❤️ usando React, Node.js e IA

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages