Projeto full-stack de um chatbot de atendimento desenvolvido com PHP, MySQL e React/Vite, com integração à API do Gemini para responder perguntas sobre produtos e fornecer uma experiência de suporte mais próxima de um atendente real.
Este projeto simula um atendimento comercial inteligente para a marca Alves. A aplicação permite:
- conversar com um assistente virtual;
- consultar informações de produtos a partir de um catálogo em banco de dados;
- responder perguntas como preço, disponibilidade e características;
- servir uma documentação interativa da API via Swagger.
- PHP 8.2 + Apache
- PDO com MySQL
- Rotas REST para conversa
- Integração com Gemini
- React + Vite
- CSS moderno para interface de chat
- Docker Compose
- MySQL 8
- Variáveis de ambiente para configuração
A solução foi construída em camadas para separar responsabilidades:
-
Backend PHP
- Recebe as mensagens do frontend.
- Consulta o catálogo de produtos no banco MySQL.
- Envia contexto à API do Gemini para gerar respostas mais naturais.
- Possui fallback local caso a API externa não esteja disponível.
-
Banco de dados
- A tabela de produtos armazena nome, preço, estoque e descrição.
- A tabela de mensagens registra conversas para acompanhamento.
-
Frontend React
- Exibe uma interface simples e funcional de chat.
- Envia mensagens para a API e mostra as respostas do atendente virtual.
-
Documentação
- A API possui uma documentação Swagger interativa acessível em /swagger.
projeto-chatbot/
├── backend/
│ └── api-rest/
│ ├── controllers/
│ ├── public/
│ ├── routes/
│ ├── services/
│ └── database/
├── frontend/
├── docker-compose.yml
├── .env
└── README.md
Antes de executar o projeto, certifique-se de ter instalado:
- Docker Desktop
- Docker Compose
- Git
git clone <seu-repositorio>
cd projeto-chatbotCopie o arquivo de exemplo:
cp .env.example .envEdite o arquivo .env com suas credenciais e chave da API do Gemini.
docker compose up -d --build- Frontend: http://localhost:5173
- API: http://localhost:8000
- Swagger: http://localhost:8000/swagger
No chat, você pode testar mensagens como:
- Qual o preço do Sabonete Facial?
- Vocês têm estoque do shampoo hidratante?
- Me fale sobre o creme corporal
O projeto utiliza as seguintes variáveis:
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=
MYSQL_USER=
MYSQL_PASSWORD=
GEMINI_API_KEY=
GEMINI_MODEL=
VITE_API_URL=Para testar a integração com IA localmente, você pode gerar uma chave gratuita na plataforma do Google AI Studio.
-
Acesse o Google AI Studio:
-
Faça login com sua conta Google.
-
No painel, clique em "Get API key" ou "Create API key".
-
Crie uma nova chave de API.
-
Copie a chave gerada.
-
No projeto, cole a chave no arquivo .env, na variável:
GEMINI_API_KEY=sua_chave_aqui- Se quiser, use o modelo padrão abaixo:
GEMINI_MODEL=gemini-2.0-flashImportante: algumas chaves podem ter limites de uso gratuito, então para testes simples o fluxo funciona bem. Se a chave não estiver disponível ou exceder o limite, o projeto já possui um fallback local para responder com base no catálogo.